QString在Qt出镜相当之高,几乎无处没有它的影子。QString是Qt中最常用的用于处理与存储字符串对象。在本小节中,与笔者一起学习它的使用方法。
1. 字符串连接
(1)使用+=
QString str = "User: "; str += userName + "\n";(2)使用append
str = "User: "; str.append(userName); str.append("\n");
2. 格式化
(1)使用sprintf
str.sprintf("%s %.1f%%" , "perfect competition", 100.0);(2)使用arg()
str = QString("%1 %2 (%3s-%4s)\n") .arg("permissive") .arg("society") .arg(1950) .arg(1970);
3. 与数值之间的转换
(1)数值-->字串
str = QString::number(59.3); str.setNum(293.4);
可以带参。对于整数,可以设置进制,如2进制,8进制之类。对于浮点数,可以设置其精度。
(2)字串-->数值
通用格式: QString::to<DataType>(bool *isOK); 如:
bool isOk; double d = str.toDouble(&isOk); int i = str.toInt(&isOk);
4. 字串提取
(1)从字符串中提取指定位置的字符串
str = "polluter pays principle"; cout << str.mid(9, 4) << endl; // 从第9位开始取4个字符: pays cout << str.mid(9) << endl; // 从第9位开始取后面的所有字符串: pays principle cout << str.left(8) << endl; // 取前8个字符: polluter cout << str.right(9) << endl; // 取后9个字符: principle(2)字串定位
str = "the middle bit"; int i = str.indexOf("middle");上面的代码返回4。若没有找到指定的字串,则反回-1。
5. 字串检查
if (url.starstWith("http:") && url.endsWith(".png"))判断字串是否是以"http:"开头,以".png"结尾的字串。
6. 大小字转换: toLower(), toUpper()
7. 替换: replace()
8. 去除字串两边的空格
str = " \t Hi, I am fine. \n"; cout << str; cout << str.trimmed();输出结果,去除了字串前后两边的空格、制表符、换行符。
注:str 本身没有发生变化。
9. 拆分与合并
(1)拆分,通过split()函数将QString拆分成QStringList。
str = "Peter,John,Lily,Lucy,Ken"; QStringList slist = str.split(',');
将上述的人名通过','进行拆分。
(2)合并
QStringList slist; slist.append("Shanghai"); slist.append("Beijing"); slist.append("Shengzhen"); QString str1 = slist.join("/"); QString str1 = slist.join("/"); cout << str1;
将QStringList成员中所有QString单无用"/"合并成一个QString。
10. 字符串与QString转换
(1)字符串转QString,这个过程通常是自动转换的。
QString str1("hello"); QString str2 = "Hi";
(2)QString转字符串
str = "hevake_lcj"; printf("User: %s\n", str.toAscii().data()); printf("User: %s\n", str.toAscii().constData()); printf("User: %s\n", qPrintable(str));