参考:http://zetcode.com/gui/qt5/strings/
字符串长度
有三种方法可以获取字符串长度,分别为size()
、count()
和length()
。他们返回特定字符串的字符数。
// length.cpp
#include <QTextStream>
int main(void) {
QTextStream out(stdout);
QString s1 = "Eagle";
QString s2 = "Eagle\n"; //包含一个换行符
QString s3 = "Eagle "; //包含一个空格
QString s4 = "орел"; // 包含一个俄罗斯字符
out << s1.length() << endl;
out << s2.length() << endl;
out << s3.length() << endl;
out << s4.length() << endl;
return 0;
}
输出结果:
$ ./length
5
6
6
4
字符串构建
动态字符串构建允许我们用实际值替换特定的控制字符。我们使用arg()
方法来进行插值。
// building.cpp
#include <QTextStream>
int main() {
QTextStream out(stdout);
QString s1 = "There are %1 white roses";
int n = 12;
out << s1.arg(n) << endl;
QString s2 = "The tree is %1 m high";
double h = 5.65;
out << s2.arg(h) << endl;
QString s3 = "We have %1 lemons and %2 oranges";
int ln = 12;
int on = 4;
out << s3.arg(ln).arg(on) << endl;
return 0;
将被替换的标记以%
字符开始。以下字符是指定参数的数字。一个字符串可以有多个参数。arg()
方法被重载,它可以包含整数,长整数,字符和QChars等等。
QString s1 = "There are %1 white roses";
int n = 12;
其中%1
是我们要替换的字符,定义为一个整型。
out << s1.arg(n) << endl;
arg()
获取到一个整型,%1
被变量n
的值代替。
QString s2 = "The tree is %1 m high";
double h = 5.65;
out << s2.arg(h) << endl;
这里是对double
类型数据进行替换,arg()
自动调用正确的方法。
QString s3 = "We have %1 lemons and %2 oranges";
int ln = 12;
int on = 4;
out << s3.arg(ln).arg(on) << endl;
%1
被第一个参数替换,%2
被第二个参数替换。
输出结果为:
$ ./building
There are 12 white roses
The tree is 5.65 m high
We have 12 lemons and 4 oranges
子串
在进行文本处理时,我们需要找到字符串的子字符串。我们left()
、mid()
和 right()
三种方法。
// substrings.cpp
#include <QTextStream>
int main(void) {
QTextStream out(stdout);
QString str = "The night train";
out << str.right(5) << endl; // 获取5个最右边的字符
out << str.left(9) << endl; // 获取9个最左边的字符
out << str.mid(4, 5) << endl;// 获取从第4个位置开始的5个字符
QString str2("The big apple");
QStringRef sub(&str2, 0, 7);
out << sub.toString() << endl;
return 0;
}
我们使用了三个方法获取子串,right()
获取最右边的字符串,left()
获取最左边的字符串,mid()
获取从指定位置开始的指定数量的字符串。
QString str2("The big apple");
QStringRef sub(&str2, 0, 7);
QStringref
类是一个QString
的只读版本。这里我们创建一个str2字符串,使用QStringref
获取子串,其中第二个参数是指定位置,第三个是子串的长度。
输出结果:
$ ./substrings
train
The night
night
The big