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