2021.6.5:QT——QString类
QString存储字符串采用的是Unicode码,每个字符是一个16b的QChar,而不是8b的char,所以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为分隔符,从start到end的子串(这里的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码,每个字符都是16b的QChar而不是8b的char,一个汉字算作一个字符。