懒人必备,几个例子搞懂字符串 焦点速看
2023-04-28 13:15:55 来源:面包芯语

访问元素

#includeintmain(void){QTextStreamout(stdout);QStringa{"Eagle"};out<

运行效果:


【资料图】

EeEASSERT:"uint(i)toclosethiswindow...

QString 是 QChars 的序列, 2 种访问其元素的方法:

它们的区别是,用 [] 的话要自行检查下标的有效性。

获取长度

#includeintmain(void){QTextStreamout(stdout);QStrings1="Eagle";QStrings2="Eagle\n";QStrings3="Eagle";out<

运行效果:

566Presstoclosethiswindow...

\n 和空格都会被算上。

动态构建

#includeintmain(){QTextStreamout(stdout);QStrings1="Thereare%1whiteroses";intn=12;out<

运行效果:

Thereare12whiterosesThetreeis5.65mhighWehave12lemonsand4orangesPresstoclosethiswindow...

%1、%2 被称为是 marker,我们可以通过 arg() 可以将 marker 替换成我们想要的内容。

如果你想动态地构建字符串的话,这个函数非常好用。

但是,如果需要大量重复地构建字符串的话,相比 sprintf(),Qstring::arg() 可能会存在性能问题。

提取子串

#includeintmain(void){QTextStreamout(stdout);QStringstr={"Thenighttrain"};out<

运行效果:

trainThenightnightThebigPresstoclosethiswindow...

3 种切法:

左切、右切、从中间切。

QStringRef 就是只读版本的 QString,一般用来指向某个 QString 的子串,这个类就是专门为了提升子串处理的性能而设计的。

分割处理

#includeintmain(void){QTextStreamout(stdout);inti;QStringstr="a,,b,c";QStringListlist1=str.split(",");for(i=0;i

运行效果:

0:a1:2:b3:cPresstoclosethiswindow...

遍历字符串

#includeintmain(void){QTextStreamout(stdout);QStringstr{"Therearemanystars."};//1.range-basedforloopfor(QCharqc:str){out<

运行效果:

Therearemanystars.Therearemanystars.Therearemanystars.Presstoclosethiswindow...

QString 由 QChars 构成,上面列举了 3 种遍历 QString 的方式。

比较字符串

#include#defineSTR_EQUAL0intmain(void){QTextStreamout(stdout);QStringa{"Rain"};QStringb{"rain"};QStringc{"rain\n"};if(QString::compare(a,b)==STR_EQUAL){out<<"a,bareequal"<

运行效果:

a,barenotequala,bareequalincaseinsensitivecomparisonb,carenotequalPresstoclosethiswindow...

比较字符串的 2 种方式:

修改内容

#includeintmain(void){QTextStreamout(stdout);QStringstr{"Lovely"};str.append("season");out<

运行效果:

LovelyseasonLovelyseaLovelygirlThestringisemptyPresstoclosethiswindow...

Qt 提供了大量的函数用于满足增删查改的需求,常用的:

搭配正则表达式

#includeintmain(void){QTextStreamout(stdout);QRegExprx("(\\d+)");QStringstr="a12b14c99d231e7";QStringListlist;intpos=0;while((pos=rx.indexIn(str,pos))!=-1){out<

运行效果:

1214992317Presstoclosethiswindow...

相关推荐: