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)合并
<span></span>QStringList slist;
slist.append("Shanghai");
slist.append("Beijing");
slist.append("Shengzhen");
QString str1 = slist.join("/");<span></span> QString str1 = slist.join("/");
cout << str1;
将QStringList成员中所有QString单无用"/"合并成一个QString。
10. 字符串与QString转换
(1)字符串转QString,这个过程通常是自动转换的。
QString str1("hello");
QString str2 = "Hi";
(2)QString转字符串