简介
字符串的概念在C语言中就存在,有一个历史遗留问题,就是C语言其实是不支持真正意义上的字符串,它是通过字符数组和一组函数实现字符串的操作。
但是在C到C++的进化之后C++已经支持通过定义类来定义自定义类型,这样就可以自定义字符串类,但是在C++发布时一同发布了STL标准库,其中包含了字符串类std::string类类型。
STL全名叫标准模板库,其标准体现在三个方面
- 相同的全局函数
- 相同的算法类和数据结构类
- 相同的类成员函数
因为STL库的实现依赖于不同厂商实现的编译器,在实现上可能存在差异,所以依赖STL开发的C++程序在不同的平台上行为可能存在差异!!!
Qt中的字符串类
- 采用Unicode编码,所以一个QChar占用两个字节
- 使用隐式共享技术来节省内存和减少不必要的数据拷贝
- 跨平台使用,不用考虑字符串的平台兼容性
- QString直接支持字符串和数字之间的相互转换
- QString直接支持字符串之间的大小比较(按照字典序)
- QString直接支持不同编码下的字符串转换
- QString直接支持std::string和std::wstring之间的相互转换
- QString直接支持正则表达式的使用
QString常用操作
包括字符串类对象构造、追加字符串、组合字符串、插入及替换、查找字符获取索引、字符串提取、向其他类型转换、比较、判断字符串是否存在、分隔字符串、过滤空白字符串、大小写切换、判断是否以某个字符串开始或结束、提取字符串、获取长度、
QString对象构造
- QString ( const QChar * unicode, int size )//使用QChar数组中的size长度个字符构造QString
- QString ( const QChar * unicode )//使用QChar数组构造QString,结尾以'\0'结束
- QString ( QChar ch )//使用一个QChar字符构造QString
- QString ( int size, QChar ch )//使用size个ch构造QString
- QString ( const QLatin1String & str )//使用**单字节编码**的str构造QString
- QString ( const QString & other )//使用其他QString引用构造新的QQString
- QString ( const char * str )//使用字符串常量构造QString
- QString ( const QByteArray & ba )//使用字节数组构造QString
追加字符串
QString s = "str";
s += "ing";//s = "string"
s.append(" ");//s = "string "类似于push_back
s.append("test");//向后追加:s = "string test"
s.prepend("This is ");//向前追加:s = "This is string Test"类似于push_front
也可以使用push_back往字符串末尾添加子串,能达到一样的作用
组合字符串
可以使用sprintf函数和arg函数
QString s;
s.sprintf("%s %.1f%%", "Value", 100.0);