采用Unicode编码,所以一个QChar占用两个字节
使用隐式共享技术来节省内存和减少不必要的数据拷贝
跨平台使用,不用考虑字符串的平台兼容性
QString直接支持字符串和数字之间的相互转换
QString直接支持字符串之间的大小比较(按照字典序)
QString直接支持不同编码下的字符串转换
QString直接支持std::string和std::wstring之间的相互转换
QString直接支持正则表达式的使用

QString对象构造:

QChar qch[]={'a','b','c','d','e'};
QString str=QString (qch , ); //使用QChar数组构造QString
//参数2:取前3个字符组成字符串
str=QString (qch );
//qch的所有字符组成字符串
QChar* p=qch;
str=QString (p); //使用QChar数组指针构造QString
str="中国";

追加字符串:

QString s = "str";
s += "ing";//字符串相加,s = "string"
s.append("|"); // 尾部添加
s.push_back("lm"); // 尾部添加
s.prepend("This is ");//前面追加
s.push_front("中国"); //前面追加

格式输出:

QString s;
s.sprintf("%s %.1f%%", "Value", 100.0);//格式输出方式一---s = "Value 100.0%"
//符号的意思参看:https://www.cnblogs.com/liming19680104/p/11216495.html
s = QString("%1 %2 %3 %4").arg("This").arg("is").arg("a").arg("test");//格式输出方式二---s = "This is a test"

插入及替换:

QString s="我是中国人";
s.insert(,"优秀的"); //插入字符串
//参数1:插入位置---从0开始
//参数2:要插入的字符串 s.replace(,,"呼和浩特"); //替换
//参数1:开始替换的位置---从0开始
//参数2:要被替换掉的字符数
//参数3:用来替换的字符串

查找:

QString s="我ef是ab中国cd人Abef";
int i=s.indexOf("Ab",,Qt::CaseInsensitive); //查找,返回找到的位置序号
//参数1:待查找的字符串,也可以是正则表达式
//参数2:开始查找的位置;如果-1表示从最后一个字符开始,如果-2表示从倒数第二个开始,以此类推
//Qt::CaseSensitive 区分大小写--默认;Qt::CaseInsensitive 不区分大小写
//返回待查找字符串第一次出现的位置,没有找到目标字符串返回-1
qDebug()<<i;
i=s.lastIndexOf("Ab"); //从尾部开始查找

清除子串:

QString s="我ef是ab中国cd人Abef";
QString str;
str=s.remove("Abc",Qt::CaseInsensitive); //清除所有子串
//参数1:待清除的字符串
//Qt::CaseSensitive 区分大小写--默认;Qt::CaseInsensitive 不区分大小写
//返回清除后的子串;找不到子串返回原字符串

提取字符串:

QString s = "QString";
QString ss = s.mid(,); //提取字符串
//参数1:开始提取的位置
//参数2:要提取的字符个数;可以省略:提取到末尾
//ss = "Str"
ss = s.left();//提取左边的n个字符
//ss = "QStr"
ss=s.right(); //提取右边的n个字符
//ss = "ing"

字符串比较:

QString str="";
QString str1="";
bool bl=str != str1; //两个字符串是否不等于
bl=str == str1; //两个字符串是否等于
bl=str < str1; //是否小于
bl=str > str1; //是否大于
bl=str <= str1; //是否小于等于
bl=str >= str1; //是否大于等于

判断字符串是否存在:

QString str="abcEfg";
bool bl=str.contains("ce",Qt::CaseInsensitive); //是否包含子串
////Qt::CaseSensitive 区分大小写--默认;Qt::CaseInsensitive 不区分大小写

判断字符串是否是empty:

bool    isEmpty () const//原型

QString().isEmpty();            // returns true
QString("").isEmpty(); // returns true
QString("x").isEmpty(); // returns false
QString("abc").isEmpty(); // returns false

判断字符串是否NULL"

bool    isNull () const//原型

QString().isNull();             // returns true
QString("").isNull(); // returns false
QString("abc").isNull(); // returns false

分隔字符串:

通过使用QString::split()能够将一个大串按照某个子串划分成多个子串并存到QStringList中

QString str = "You,I,She";
QStringList list= str.split(","); //分隔字符串
//参数:分割字符串
//("You", "I", "She")

section()

section() 函数的原型为:

QString section (const QString &sep, int start, int end = -1, SectionFlags flags = SectionDefault) const

其功能是从字符串中提取以 sep 作为分隔符,从 start 端到 end 端的字符串

QString str2, str1="学生姓名,男,1984-3-4,汉族,山东";
str2=str1.section (",",,); // str2="学生姓名", 第 1 段的编号为 0
str2=str1.section (",",,}; // str2="男"
str2=str1.section (",",,}; // str2="学生姓名,男"
str2=str1.section (",",,); // str2="山东"

去除首尾空格:

QString s("   abc def ghi   ");
s = s.trimmed();//去除首尾空格

simplified() 不仅去掉首尾的空格,中间连续的空格也用一个空格替换

大小写转换:

QString s = "Hello World";
QString ss = s.toUpper(); //都转换成大写
ss = s.toLower(); //都转换成小写

判断是否以某个字符串开始或结束:

QString s = "http:www.baidu.com";
bool bl = s.startsWith("http:"); //是否以某个字符串开始
bl = s.endsWith("com"); //是否以某个字符串结束

获取子串出现的次数:

QString s = "abc  Abcefg nbgabc";
int i=s.count("abc");//获取子串出现的次数
//参数2:Qt::CaseSensitive 区分大小写--默认;Qt::CaseInsensitive 不区分大小写

获取字符串长度:

QString s = "我是中国人";
int i=s.length();//获取字符串长度--字符数

也可以用    i=s.size();

字符串类QString的更多相关文章

  1. Qt入门-字符串类QString

    原地址:http://blog.csdn.net/xgbing/article/details/7770854 QString是Unicode字符的集合,它是Qt API中使用的字符串类. QStri ...

  2. 第11课 Qt中的字符串类

    1. 历史遗留问题和解决方案 (1)历史遗留问题 ①C语言不支持真正意义上的字符串 ②C语言用字符数组和一组函数实现字符串操作 ③C语言不支持自定义类型,因此无法获得字符串类型 (2)解决方案 ①从C ...

  3. Qt常用类——Qstring

    Qstring有一些方面跟C/C++中的string的使用,例如把一个字符串追加到另一个字符串中,也是用“+”.也有append函数等. 下面是是Qstring的一些常用的具体函数示例: Qt的QSt ...

  4. Core Java 总结(字符和字符串类问题)

    所有代码均在本地编译运行测试,环境为 Windows7 32位机器 + eclipse Mars.2 Release (4.5.2) 2016-10-17 整理 字符,字符串类问题 正则表达式问题 J ...

  5. Java:字符串类String的功能介绍

    在java中,字符串是一个比较常用的类,因为代码中基本上处理的很多数据都是字符串类型的,因此,掌握字符串类的具体用法显得很重要了. 它的主要功能有如下几种:获取.判断.转换.替换.切割.字串的获取.大 ...

  6. 可变字符串类 StringBuilder

    string类创建的字符串是不可变的(同一内存中),每更改一次,就会新开辟内存,不利于高效频繁操作. 当频繁操作同一字符串变量时,建议使用StringBuilder. 可变字符串类StringBuil ...

  7. Java开发知识之Java字符串类

    Java开发知识之Java字符串类 一丶简介 任何语言中.字符串都是很重要的.都涉及到字符串的处理. 例如C++中. 字符串使用内存. 并提供相应的函数进行处理 strcmp strcat strcp ...

  8. C++自定义String字符串类,支持子串搜索

    C++自定义String字符串类 实现了各种基本操作,包括重载+号实现String的拼接 findSubStr函数,也就是寻找目标串在String中的位置,用到了KMP字符串搜索算法. #includ ...

  9. 设计一个字符串类String(C++练习题)

    要求:设计一个字符串类String,可以求字符串长度,可以连接两个串(如,s1=“计算机”,s2=“软件”,s1与s2连接得到“计算机软件”),并且重载“=”运算符进行字符串赋值,编写主程序实现:s1 ...

随机推荐

  1. 设计模式:建造者模式(Builder)

    流水作业大家应该都清楚吧!在流水作业中,我们可以将一些复杂的东西给构建出来,例如汽车.我们都知道汽车内部构件比较复杂,由很多部件组成,例如车轮.车门.发动机.方向盘等等,对于我们用户来说我们并不需要知 ...

  2. vscode 插件 配置

    第一页 第二页 第三页 settings.json配置 { "editor.fontSize": 20, "files.autoSave": "off ...

  3. Codeforces 1201E2. Knightmare (hard)

    传送门 看到棋盘先黑白染色冷静一下 然后分析发现,如果初始时两只马在同色的格子,那么一定是后手吃先手 反之一定是先手吃后手 所以分类讨论一下,如果初始在同色的格子,并且后手到达终点的步数更少,那么后手 ...

  4. Max History CodeForces - 938E (组合计数)

    You are given an array a of length n. We define fa the following way: Initially fa = 0, M = 1; for e ...

  5. thinkphp3.2.3 自定义路由实践

    使用了很久的tp3,却没发现还有这么可玩性的功能. 官方文档:要使用路由功能,前提是你的URL支持PATH_INFO(或者兼容URL模式也可以,采用普通URL模式的情况下不支持路由功能),并且在应用( ...

  6. 部署etcd集群

    部署etcd集群 第一步:先拉取etcd二进制压缩包 wget https://github.com/coreos/etcd/releases/download/v3.3.2/etcd-v3.3.2- ...

  7. 第二十三篇 jQuery 学习5 添加元素

    jQuery 学习5 添加元素   同学们,这节课,使用jQuery动态添加元素,是很关键的一课,一般用在什么地方呢:别人发表一篇文章,你评论楼主的时候,总不能是提交表单,到后台的其他页面处理,然后再 ...

  8. ubuntu - 如何以root身份使用图形界面管理文件?

    nautilus 是gnome的文件管理器,但是如果不是root账号下,权限受限,我们可以通过以下方式以root权限使用! 一,快捷键“ctrl+alt+t”,调出shell. 二,在shell中输入 ...

  9. python中re模块

    1.定义 正则表达式是一个特殊的字符序列,能方便的检查一个字符串是否与某种模式匹配.re模块使得python拥有全部的正则表达式功能. 2.用途 通过使用正则表达式,可以:测试字符串内的模式.—— 例 ...

  10. DedeAMPZ 网吧能安装却不能打开网站

    只需把 监听IP的连接里的 LMHOSTS查询 禁用就行了. 方法: 连接属性-->TCP/IP 协议属性-->WINS 选项卡-->去掉 启用 LMHOSTS查询 前面的勾. by ...