4.6 QString与QStringList


***【在线视频教程】***

好文章,来自【福优学苑@音视频+流媒体】

4.6 QString与QStringList

QString, QByteArray, 和 QVariant这三个类和容器有许多相同之处,并且在一些情况下可以被当作特殊的容器。 

同样,像容器,这些类使用隐式共享来优化内存和速度。


QString 

16-bit Unicode

字符串被每个GUI程序所使用,不仅是用户界面而且还有数据结构。 C++原生提供两种字符串: 传统的C风格以'\0'结尾的字符数组和std::string类。 与这些不同,QString使用16-bit Unicode值。 Unicode 包含 ASCII 和 Latin-1 这个子集和它们的普通数值。 而QString是16-bit,所以它可以表示世界上绝大多数语言的字符。


当使用QString时,我们不必操心如此隐秘的细节像分配足够的内存或着是数据是'\0'结尾的。 总的来说,QString可以被认为是一个QChar向量。一个QString能嵌入'\0'字符。 length()函数返回整个字符串大小,包括嵌入的'\0'。


+, +=

QString提供一个二元+操作符来连接两个字符串和一个+=操作符来向一个字符串追加字符串。 因为QString在字符串的结尾处自动预分配内存,所以通过反复追加字符来增加一个字符串是非常快的。 这是一个+和+=结合的例子:


QString str = "User: "; 

str += userName + "\n";


QString::append()函数

还有一个QString::append()函数与+=操作符有这一样的功能:

str = "User: "; str.append(userName); str.append("\n");



QString::sprintf()函数

组合字符串的一个完全不同的方式是使用QString的sprintf()函数:

str.sprintf("%s %.1f%%", "perfect competition", 100.0);




静态函数QString::number()

QString能将数字转换为字符串,通过使用静态函数QString::number():

str = QString::number(59.6);


或者使用setNum()函数:

str.setNum(59.6);

逆向变换

逆向变换,就是将一个字符串转换为一个数字,使用的是toInt(), toLongLong(), toDouble(),等等。 例如:

bool ok; double d = str.toDouble(&ok);

left(),right(),mid(),indexOf()


QStringList

一个字符串能被分成为一个装有子串的QStringList,通过使用QString::split():

QString str = "apple banana grape";

QStringList words = str.split(" ");


在上面的例子,我们把"apple banana grape"分成三个子串: "apple", "banana", 和 "grape"




好文章,来自【福优学苑@音视频+流媒体】
***【在线视频教程】***