Qt 中的QString
1、Qt中的字符串类
- 介绍
— 采用Unicode编码
— 采用隐式共享技术,节省内存和不必要的数据拷贝
隐式共享介于浅拷贝和深拷贝之间,当两个string对象赋值时,会实现浅拷贝(共享一块内存),如果某个对象被修改了,则会实现深拷贝(从新开辟内存)
— 跨平台使用,不需要考虑不同平台的兼容性
1、QString直接支持字符串与数字的相互转换
2、QString直接支持字符串大小比较
3、QString直接支持不同字符编码间的相互转换
4、QString直接支持std::string和std::wstring的相互转换
5、QString直接支持正则表达式的应用
- QString常用函数
QString str;
str = "hello"; //直接赋值
str.length(); //获取字符串长度
str.size(); //获取字符串数量,等价于length()
str.capacity(); //获取容量,容量包含了当前string里不必增加内存就能使用的字符数
str.isEmpty(); //如果str为空或为0 ,则返回true,否则返回false
str.isNull(); //如果为0,则返回true,否则返回false
str.clear(); //清空str
str. resize(8); //设置str的字符串长度
str.fill('m'); //将str字符串,全部字符填为'm'
str.fill('m',5); //填充5个字符'm',并修改str的字符串长度为5
str.append("ABC"); //在str字符串末尾附加"ABC"子串
str.prepend("abc"); //在str字符串头部添加"abc"子串
str.chop(2); //从str字符串末尾, 去掉2个字符
str = "Montreal";
str.remove(1, 4); //从str下标1位置开始,清除4个字符, s = "Meal"
str.setNum(1234.5); //数字转字符串 str = "1234.5"
double val = str.toDouble();//字符串转double val =1234.5
bool ret = false;
str.toDouble(&ret); //如果转换成功,ret = 1,否则ret = 0
return ret;
str.sprintf("%d %s",1,"first"); //通过一定参数输出到字符串里, str= "1 first"
str = "abcdef";
str.indexOf ("bc"); //return 1
str.indexOf ("bc",1); //从str下标1的位置查找,return 1
str.indexOf ("bc",2); //没找到,则return -1
str.lastIndexOf("bc"); //反向查找,从str末尾向前查找,return 1
str. lastIndexOf("bc",5); //反向查找,从str下标5的位置向前查找,return 1
str.lastIndexOf("bc",-2); //反向查找,从str末尾-1的位置向前查找
str.insert( 2, "AB "); //在str字符串下标2的位置插入"AB "子串
str = "abcdefgh";
str2 = str.mid(3); //提取子串,提取出str的下标为3到末尾,给str2
str2 = str.mid(3,4); //从str的下标为3开始,提取4个字符给str2