QString 是Qt 中的一个类,用于存储字符串,QString 没有父类。QString 存储的是一串字符,每个字符是一个 QChar 类型的数据。QChar 使用的是 UTF-16 编码,一个字符包含 2字节数据。
对于超过 65535的Unicode 编码,QString 使用两个连续的 QChar 字符表示。UTF-16是一种 Unicode编码,能表示汉字,在QString 字符串中一个汉字是一个字符。
QString 类定义了大量的接口函数用于字符串操作。QString 在 Qt类库中应用非常广泛,很多函数的参数是 QString 类型。QString 使用隐式共享减少内存占用,也就是只有在修改一个字符串的时候,这个字符串才会被复制。
QString 是一个类,有多种构造函数,定义 QString 字符串的较简单方式是给它的构造函数信递一个const char 类型的数据。例如,下面的代码定 义了一个QString 对象str,并且初始化其字符串内容为 “Hello Qt”。
QString str = "Hello Qt";
在Qt Creator 中,所有源程序文件都默认使用 UTF-8 编码进行保存,所以,赋值语句右侧的“Hello Qt” 是一个C语言标准的 const char *类型的字符串,以“\0”作为结束符。 QString 会使用其静态函数 fromUtf8()将这个const char *类型的数据转换为 UTF-8 编码的字符串。
QString 在被创建和初始化后,其存储的字符串就是一个QChar 字符数组,可以使用元素索引操作符 “[ ]” 或接口函数at()访问每个字符。QString 字符串内字符的索引序号是从0开始的。
* (1)函数front()和back() 分别返回字符串的第一个字符(str[0])和字符串最后一个字符
* (2)函数left(int n) 和right(int n) 分别返回字符串的左边第n个字符和字符串右边第n个字符
* (3)函数first(int n) 和last(int n) 分别返回字符串前n个字符和字符串后n个字符
* (4)函数mid(int position, int n = -1) 返回字符串position位置的后n个字符
QString QString::mid(int position, int n = -1) const
* (5)函数section() 从字符串提取以sep作为分隔符,从start段到end段字符串
QString section
(const QString &sep, int start, int end = -1, SectionFlags flags = SectionDefault) const
*(1)函数isNull()和isEmpty() 判断字符串是否为空,区别QString("")相当QString("\0"),所以QString("\0"),对于QString ("").isNull()则为假
QString str1, str2 = "";
bool N = str1.isNull(); //true, 未赋值
N = str2.isNull(); //false,已被赋值不为null
N = str1.isEmpty(); //true
N = str2.isEmpty(); //true
* (2)函数size(),length()和count() 前两者都返回字符串中字符个数,功能相同;count()不带参数表示与前二个功能相同,带参数表示某个字符串在当前字符串出现的次数
* (3)函数clear() 清空当前字符串
* (4)函数resize() 改变字符串长度,扩充字符串容量
* (5)函数fill() 将字符串中每个字符都用一个新的字符替换
* (1)函数indexOf()和lastIndexOf() 在字符串内部查找某个子字符串首次出现的位置
* (2)函数contains() 判断字符串是否包含某个子字符串
* (3)函数endsWith()和startsWith() 判断字符串是否以某个字符开头和以某个字符结尾
* (4)函数count() 统计字符串里子字符串出现的次数
* (1)函数toUpper()和toLower() 字符串转大写和小写
* (2)函数trimmed()和simplified() 去掉字符串中首尾空格 和 把多个空格用单个空格替换
* (3)函数chop() 去掉末尾的n个字符,n是输入参数,如果n大于或等于字符串实际长度,则字符串会变为空
* (4)函数insert() 在字符串的某个位置插入一个字符串
* (5)函数replace() 从字符串的pos位置开始替换n个字符
* (6)函数remove() 从字符串的pos位置开始移除n个字符
QString 字符串中的每个字符都是QChar 类型的,QChar 也是一个类,它采用 UTF-16 编码表示字符。
bool isDigit() const 判断字符是否为 0~9的数字
bool isLetter() const 判断字符是否为字母
bool isLetterOrNumber() const 判断字符是否为字母或数字
bool isLower() const 判断字符是否为小写字母
bool isUpper() const 判断字符是否为大写字母
bool isMark() const 判断字符是否为标记
bool isNonCharacter() const 判断字符是否为非文本字符
bool isNull() const 判断字符编码是否为 0x0000,也就是“\0”
bool isNumber() const 判断字符是否为一个数,表示数的字符不仅包括数字0~9,还包括数字符号①、②等
bool isPrint() const 判断字符是否为可打印字符
bool isPunct() const 判断字符是否为标点符号
bool isSpace() const 判断字符是否为分隔符号,分隔符号包括空格、制表符
bool isSymbol() const 判断字符是否为符号,如特殊符号★、▲
char toLatin1() const 返回与 QChar 字符等效的 Latinl 宇符,如果无等效字符则返回0
QChar toLower() const 返回字符的小写形式字符,如果字符不是宇母,则返回其本身
QChar toUpper() const 返回字符的大写形式字符,如果字符不是宇母,则返回其本身
ushort unicode() const 返回ushort的Unicode编码数值
QChar 的函数 toLatin1()用于将 QChar 字符转换为 Latin1 字符,也就是将 UTF-16编码的字符转换为1 字节 Latin1 编码的宇符。只有当 QChar 宇符的编码为 0~255 时,函数 toLatin1()的转换才有意义。
QChar 还有一个静态函数 QChar::fromLatin1(),它用于将 Latin1 字符转换为 QChar 宇符,其函数原型定义如下:
QChar QChar:: fromLatin1(char c)
QChar 有一个构造函数与这个静态函数功能相同,这个构造函数定义如下:
QChar:: QChar (char ch)
例如,运行下面的一段代码后,字符串 str 的内容会由“Dimple” 变成 “Pimple”。
QString str= "Dimple";
QChar chP= OChar::fromLatin1('P'); //使用静态函数
//QChar chP= QChar ( 'P' ) ; //使用构造函数
str [0] = chP; //替换了str中的第一个字符
QChar 字符是 UTF-16编码的字符, QChar 的接口函数unicode()用于返回字符的 UTF-16编码,也就是ushort类型的数。 我们可以通过这个函数获取任何一个字符的 UTF-16 编码,例如一个汉字的 UTF-16 编码。
也可以通过 char16_t 类型的编码构造 QChar 字符,静态函数 QChar::fromUcs2()
可以实现这样的功能,其函数原型定义如下:
QChar QChar::fromUcs2 (char16_t c)
QChar 有一个构造函数与这个静态函数功能相同,这个构造函数定义如下:
QChar:: QChar (char16_t ch)
QChar 类还定义了逻辑运算符,用于两个 QChar对象的比较。两个QChar 对象的逻辑比较就是两个 QChar 字符的 UTF-16编码大小的比较