QT学习(三)QString操作

QString存储16位QChar(Unicode)字符串。
QString使用隐式共享(copy-on-write)来提高性能。

初始化方式

由于QString是Qchar类型,如果从C++ String转换为QString时,需要先通过c_str()转化为C风格字符串。

1
2
3
4
5
6
7
8
9
10
11
12
int main(void){ 
QString str1 = "The night train";
qDebug() << str1; QString str2("A yellow rose");
qDebug() << str2; QString str3 {"An old falcon"};
qDebug() << str3; std::string s1 = "A blue sky";
QString str4 = s1.c_str();
qDebug() << str4; std::string s2 = "A thick fog";
QString str5 = QString::fromLatin1(s2.data(), s2.size());
qDebug() << str5; char s3[] = "A deep forest";
QString str6(s3);
qDebug() << str6;
}

访问字符串元素:
可以通过[]索引和at方式访问字符串元素。

operator[]返回的是可以修改的QChar&。
at返回为const QChar,为只读,更高效。

构建字符串

1
2
3
QString s3 = "We have %1 lemons and %2 oranges"; 
int ln = 12;
int on = 4; qDebug() << s3.arg(ln).arg(on) ;

截取字串的方式

1
2
3
str.right(5); 
str.left(9);
str.mid(4, 5);

遍历字符串的几种方式

1
2
3
4
5
6
for (QChar qc: str) 
out << qc << " "; out << endl;
for (QChar *it=str.begin(); it!=str.end(); ++it)
out << *it << " " ; out << endl;
for (int i = 0; i < str.size(); ++i)
out << str.at(i) << " ";

字符串比较
QString::compare返回整型:
0表示相等
负数表示小于
正数表示大于

字符类型判断

1
2
3
4
5
6
for (QChar s : str) { 
if (s.isDigit()) {digits++;} //判断数字
else if (s.isLetter()) {letters++;} //判断字母
else if (s.isSpace()) {spaces++;} //判断空白字符
else if (s.isPunct()) {puncts++;} //判断标点符号
}

字符串类型转换
转为int型 s1.toInt()
转为字符串 setNum(n1)

字符串修改操作
str.append(" season"):追加字符串
str.remove(10, 3):移除index =10 后的三个字符
str.replace(7, 3, "girl"):替换 index = 7 后的三个字符为新字符串
str.clear(); :清空字符串
‘str.split(‘,’)’:按指定字符切割字符串,返回字符串列表QStringList
‘str.trimmed()’:去除字符串两侧的空格

对齐字符串
可以使用leftJustified和rightJustified来对齐字符串

1
2
3
4
5
QString field3 { "Residence: " }; 
QString field4 { "Marital status: " };
int width = field4.size();
qDebug() << field3.rightJustified(width, ' ') << "New York";
qDebug() << field4.rightJustified(width, ' ') << "single";
Residence: New York

Marital status: single

转码为html格式

1
2
QString allText = "<\"hello the world!\">"; 
qDebug() << allText.toHtmlEscaped();

<"hello the world!">

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2022-2024 Konsin
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信