2021.6.5:QT——QString类

QString存储字符串采用的是Unicode码,每个字符是一个16bQChar,而不是8bchar,所以QString处理中文字符没有问题,而且一个汉字算作一个字符。

append与prepend

在字符串后边和前边添加字符串

QString str1="Hello ";
QString str2="World ";
str1.append(str2);//str1="Hello World "
str1.prepend(str2);//str1="World Hello"

toUpper与toLower

字符串大小写转化

QString str1 = "Hello,World",str2;
str2 = str1.toUpper();//str2="HELLO,WORLD"
str2 = str1.toLower();//str2="hello,world"

count、size、length

作用相同,都是返回字符串中字符个数(单个中文算一个)

QString str = "NI 好";
int n = str.size();//n=3
n = str.count();//n=3;
n = str.length();//n=3

trimmed与simplified

trimmed:去除首尾的空格

simplified:去除首尾空格,将中间连续的空格用一个空格替换

    QString str1=" Are You  Ok ?  ";
    qDebug()<<str1.trimmed()<<endl;//"Are you  OK?"
    qDebug()<<str1.simplified()<<endl;//"Are you OK?"

indexOf与lastIndexOf

int indexOf(QString str , int from = 0):从from指定索引开始查找子串str,返回第一次查找到的位置;

int lastIndexOf(QString str):返回str最后一次出现的位置(索引下标);

QString str1="G:\Qt5Book\QT5.9Study\qw.cpp";
N=str1.indexOf("5.9");  // N=13
N=str1.lastIndexOf("\\"); //N=21

"\"是转义字符,如果想查找"\",需要输入"\\"

isNull与isEmpty

isNull:判断字符串是否是NULL

isEmpty:判断是否是只有"\0"的空字符串,包括""这样的空字符串

contains

判断字符串中是否包含某个字符串,第二个参数指定是否大小写(缺省时不区分):

QString str1="G:\Qt5Book\QT5.9Study\qw.cpp";
N=str1.contains (".cpp", Qt::CaseInsensitive) ; // N=true,不区分大小写
N=str1.contains (".CPP", Qt::CaseSensitive) ;  // N=false,区分大小写

endsWith与startsWith

分别判断是否以某个字符串结尾和开始,第二个参数指定是否大小写(缺省时不区分)

QString str1=MG:\Qt5Book\QT5.9Study\qw.cpp";
N=str1.endsWith (".cpp", Qt::CaseInsensitive) ; // N=true,不区分大小写
N=str1.endsWith (".CPP", Qt::CaseSensitive) ; // N=false,区分大小写
N=str1.startsWith ("g: ") ; // N=true,缺省为不区分大小写

left与right

分别表示从字符串左右取多少个字符构成新串返回。注意,一个汉字当做一个字符。

QString str = "学生姓名,男,1984-3-4,汉族,山东";
int n = str.indexof(",");//n=4,第一个","出现的位置
qDebug()<<str.left(n);//"学生姓名"
n = str.lastIndexOf(",");//n=18,最后一个","出现的位置
qDebug()<<str.right(str.size()-n-1);//山东

section

QString section ( QString sep , int start , int end = -1 )

从字符串中提取,以sep为分隔符,从startend的子串(这里的start与end是指分割后的第几个子串,如果跨越了多个子串,返回的子串中你那个还要有分隔符):

QString str2, str1="学生姓名,男,1984-3-4,汉族,山东";
str2=str1.section (",",0,0); // str2="学生姓名", 第0个子串到第0个子串,实际上就是第0个子串本身
str2=str1.section (",",1,1}; // str2="男"
str2=str1.section (",",0,1}; // str2="学生姓名,男"
str2=str1.section (",",4,4); // str2="山东"

 QString还有很多功能函数没有在此介绍,如果需要,可以查询Qt帮助文件。

总结

1、QString存储字符串采用Unicode码,每个字符都是16bQChar而不是8bchar,一个汉字算作一个字符

posted @ 2021-06-05 17:01  ShineLe  阅读(117)  评论(0)    收藏  举报