QString是Qt编程中常用的类,除了用作数字量的输入输出之外,QString还有很多其他功能,熟悉这些常见的功能,有助于灵活地实现字符串处理功能。 QString存储字符串采用的是Unicode码,每一个字符是一个16位的QChar,而不是8位的char,所以QString处理中文字符没有问题,而且一个汉字算作是一个字符。字符串转换为数值 QString类从字符串转换为整数的函数有:inttoInt(boolokQNULLPTR,intbase10)constlongtoLong(boolokQNULLPTR,intbase10)constshorttoShort(boolokQNULLPTR,intbase10)constuinttoUInt(boolokQNULLPTR,intbase10)constulongtoULong(boolokQNULLPTR,intbase10)const 这些函数如果不设置参数,缺省表示从十进制表示的字符串转换为整数;若指定整数基参数,还可以直接将二进制、十六进制字符串转换为整数。 QString将字符串转换为浮点数的函数有:doubletoDouble(boolokQNULLPTR)constfloattoFloat(boolokQNULLPTR)const数值转换为字符串 可以使用QString的静态函数number()和asprintf(),也可以使用其公共函数setNum()和sprintf()。 QString的sprintf()函数与C语言里的sprintf()函数的格式是一样的,而setNum()和number()函数使用另外一种格式定义,而且setNum和number有多个重载函数定义,可以处理各种类型的整数和浮点数,在处理整数时还可以指定进制,例如将一个整数直接转换为十六进制或二进制字符串。 如果对于一个浮点数db,希望显示两位小数,下面4行语句都可以实现这个功能。QStringstr;strQString::number(db,’f’,2);strQString::asprintf(。2f,db);strstr。setNum(db,‘f’,2);strstr。sprintf(。2f,db);进制转换 将一个整数转换为不同进制的字符串,可以使用QString的函数setNum()和number(),它们的函数原型是:QStringsetNum(intn,intbase10)QStringnumber(intn,intbase10) 其中n是待转换的整数,base是使用的进制,缺省为十进制,也可以指定为十六进制和二进制。下面是读取二进制字符串,然后转换为十进制和十六进制的代码。QStringstruieditBintext();读取二进制字符串boolok;intvalstr。toInt(ok,2);以二进制数读入strQString::number(val,10);数字转换为十进制字符串strstr。setNum(val,16);数值转化为十六进制strstr。toUpper();字符串添加 append()在字符串的后面添加字符串,prepend()在字符串的前面添加字符串,如:QStringstrl卖,str2拐;QStringstr3strl;strl。append(str2);str1卖拐str3。prepend(str2);str3拐卖大小写转换 toUpper()将字符串内的字母全部转换为大写形式,toLower()将字母全部转换为小写形式,如:QStringstrlHello,World,str2;str2strl。toUpper();strlHELLO,WORLDstr2strl。toLower();strlhello,world字符串大小 count()、size()和length()都返回字符串的字符个数,这3个函数是相同的,但是要注意,字符串中如果有汉字,一个个汉字算一个字符。QStringstrlNI好;Nstrl。count();N3Nstrl。size();N3Nstrl。length();N3去除空格 trimmed()去掉字符串首尾的空格,simplified()不仅去掉首尾的空格,中间连续的空格也用一个空格替换。QStringstrlAreyouOK?,str2;str2strl。trimmed();strlAreyouOK?str2strl。simplified();strlAreyouOK?查找子字符串位置 indexOf()函数的原型为:intindexOf(constQStringstr,intfrom0,Qt::CaseSensitivitycsQt::CaseSensitive}const 其功能是在自身字符串内査找参数字符串str出现的位置,参数from是开始査找的位置,Qt::CaseSensitivitycs参数指定是否区分大小写。 lastIndexOf()函数则是查找某个字符串最后出现的位置。QStringstrlG:Qt5BookQT5。9Studyqw。cpp;Nstrl。indexOf(5。9);N13Nstrl。lastlndexOf();N21 是转义字符,如果要查找需要输入。判断是否为空字符串 isNull()和isEmpty()两个函数都判读字符串是否为空,但是稍有差别。如果一个空字符串,只有,isNull()返回false,而isEmpty()返回true;只有未赋值的字符串,isNull()才返回true。QStringstrl,str2;Nstrl。isNull();Ntrue未赋值字符串变量Nstr2。isNull();Nfalse只有的字符串,也不是NullNstr1。isEmpty();NtrueNstr2。isEmpty();Ntrue QString只要赋值,就在字符串的末尾自动加上,所以,如果只是要判断字符串内容是否为空,常用isEmpty()。判断是否包含 contains()判断字符串内是否包含某个字符串,可指定是否区分大小写。QStringstrlG:Qt5BookQT5。9Studyqw。cpp;Nstrl。contains(。cpp,Qt::CaseInsensitive);Ntrue,不区分大小写Nstrl。contains(。CPP,Qt::CaseSensitive);Nfalse,区分大小写判断开头结尾 startsWith()判断是否以某个字符串开头,endsWith()判断是否以某个字符串结束。QStringstrlG:Qt5BookQT5。9Studyqw。cpp;Nstrl。endsWith(。cpp,Qt::Caselnsensitive);Ntrue,不区分大小写Nstrl。endsWith(。CPP,Qt::CaseSensitive);Nfalse,区分大小写Nstrl。startsWith(g:);Ntrue,缺省为不区分大小写截取字符串 left()表示从字符串中取左边多少个字符,right()表示从字符串中取右边多少个字符。注意,一个汉字被当作一个字符。QStringstr2,strl学生姓名,男,198434,汉族,山东;Nstrl。indexOf(,);N4,第一个,出现的位置str2strl。left(N);str2学生姓名Nstrl。lastIndexOf(,);N18最后一个逗号的位置str2strl。right(strl。size()Nl);str2山东,提取最后一个逗号之后的字符串 section()函数的原型为:QStringsection(constQStringsep,intstart,intend1,SectionFlagsflagsSectionDefault)const 其功能是从字符串中提取以sep作为分隔符,从start端到end端的字符串。QStringstr2,strl学生姓名,男,198434,汉族,山东;str2str1。section(,,0,0);str2学生姓名str2str1。section(,,1,1);str2男str2str1。section(,,0,1);str2学生姓名,男