目录
2.1字符串类
QString 是 Qt 中的一个类,用于存储字符串,QString 没有父类。QString 存储的是一串字符,每个字符是一个 QChar 类型的数据。
QString 类定义了大量的接口函数用于字符串操作。QString在 Qt 类库中应用非常广泛,很多函数的参数是 QString 类型。QString 使用隐式共享减少内存占用,也就是只有在修改一个字符串的时候,这个字符串才会被复制。
2.1.1字符串的一般操作
1.字符串拼接
使用加号运算符可以直接将两个 QString 字符串拼接为一个字符串。
QString str1 = "你是",str2 = "谁?";
QString str3 = str1 + str2; //你是谁?
QString str4 = str2 + str1; //谁?你是
addend()函数实现在一个字符串末尾追加另一个字符串,
prepend()函数在原字符串的开头插入另一个字符串,
insert()函数在原字符串特定的位置插入另一个字符串。
QString str1 = "猜猜";
QString str2 = "我是谁";
QString str3 = "Hello ";
str1.append(str2);
str1.append("__皮卡丘。");
str1.prepend(str3);
qDebug()<<str1;
str1.insert(13,"I am");
qDebug()<<str1;
//运行结果
"Hello 猜猜我是谁__皮卡丘。"
"Hello 猜猜我是谁__I am皮卡丘。"
2.字符串查询
QString::startsWith()函数判断一个字符串是否以某个字符串开头。
QString::endsWith()函数判断一个字符串是否以某个字符串结尾。
QString::contains()函数判断一个指定的字符串是否出现过。
bool ret;
QString str = "Welcome to you!";
ret = str.startsWith("Welcome",Qt::CaseSensitive);//返回true
qDebug()<<ret;
ret = str.startsWith("you",Qt::CaseSensitive);//返回false
qDebug()<<ret;
ret = str.endsWith("you!",Qt::CaseSensitive);//返回true
qDebug()<<ret;
ret = str.contains("to",Qt::CaseSensitive);//返回true
qDebug()<<ret;
indexOf()的功能是在当前字符串内查找某个字符串首次出现的位置。
lastIndexOf()的功能则是在当前字符串内查找某个字符串最后出现的位置。
带参数的count()统计当前字符串中某个字符串出现的次数。
QString stra3 = "qt,Qt,Qt,qt,qt";
int N = stra3.count("qt");//默认区分大小写
qDebug()<<N;//3
N = stra3.count("Qt");
qDebug()<<N;//2
N = stra3.count("QT",Qt::CaseInsensitive);
qDebug()<<N;//5
3.字符串截取
(1) 函数 front()和 back()。函数 front()返回字符串中的第一个字符,相当于 at(0);函数 back() 返回字符串中的最后一个字符。
QString str = "Hi,吃了吗";
QChar ch1 = str.front();//ch1 = 'H'
QChar ch2 = str.back();//ch2 = '吗'
(2) 函数 left()和 right()。函数 left()从字符串中提取左边 n 个字符,函数 right()从字符串中提取右边 n 个字符,n 为设定参数。
QString str4 = "It's been quite a journey this year, "
"full of surprises and unexpected events. "
"Let's leave the past behind and move on.";
QString str5 = str4.left(3);
qDebug()<<str5;//"It' "
str5 = str4.right(5);
qDebug()<<str5;// "e on."
(3) 函数 mid()。函数 mid()用于返回字符串中的部分字符串,其函数原型定义如下:
QString QString::