QString在Qt的各种数据转换中起着重要的作用,熟悉QString的使用是Qt编程真正的强大力量。
虽然QString字符串包含相当多的操作符和函数,但以下是一些常见的操作符和函数。
(1) )用于组合两个字符串,(=)用于将一个字符串添加到另一个字符串的末尾。 示例:
QString str1='Welcome '; str1=str1 'to you!' ; //str1='欢迎来到you!' QString str2='Hello,'; str2 ='World!' ; //str2='Hello,World!' )2) QString:append ) )函数与“=”操作符具有相似的功能,可在字符串末尾添加其他字符串。 示例:
QString str1='Welcome '; QString str2='to '; str1.append(str2; //str1=' welcome to ' str1. append (' you!' ); //str1='欢迎来到you!' )3)另一个用于合并字符串的函数是QString:sprintf ) ),该函数支持与c库中的函数sprintf )相同的格式定义。 示例:
QString str; str.sprintf('%s”,“欢迎”); //str='welcome'str.sprintf('%s ',' to you!' ); //str=' to you!' str.sprintf('%s%s )、' Welcome )、' to you!' ); //str='欢迎来到you!' ; )4) Qt还具有使用QString:arg ) )函数的有用字符串组合。 此函数的重载可以处理很多数据类型。 此外,某些重载还具有其他参数,用于控制字段的宽度、数字基数或浮点精度。 对于QString:sprintf (),QString:arg ) )类型安全,完全支持Unicode,并且可以更改“/n”参数的顺序,从而实现最佳解决方案例如:
QString str; str=qstring('%1wasbornin%2. ' ).arg ) ' Joy ' ).arg ) 1993 ); //str='Joy was born in 1993.'; 其中:
“%1”已被“Joy”替换。
“%2”已被“1993”替换。
)5) QString还提供了组合其他字符串的方法,包括:
a. insert ) )函数:在原始字符串的特定位置插入另一个字符
b. prepend ()函数:在原始字符串的开头插入另一个字符串
c. replace ) )函数:将原始字符串的某些字符替换为指定字符串
)字符串两端的空白(空白字符包括换行符“n”、换行符“r”、选项卡“t”、空白字符:“”等)经常使用,如在获取用户输入帐户时必须删除空白字符。
a. QString:trimmed ()函数:删除字符串两端的空格
b. QString:simplified ()函数:删除字符串两端的空白字符,并使用一个空白字符“)”代替字符串中的空白字符。
例如:
QString str1=' Welcome t to n you!' ; QString str2=' Welcome t to n you!' ; str1=str1.trimmed (; //str1=' Welcome t to n you!' str2=str2.simplified (; //str2='欢迎来到you!' (7)用于分割字符串的split函数
qbytearrayarray=TCP套接字- read all (; //从套接字读取数据的QString strr=array; //将数据转换为QString格式QStringList strlist=strr.split (' ); //用空格分隔数据,并在数组中添加qstringlistlist=strlist.at(1).split ) ' # '; strlist的第一个元素用“#”分隔,存储在list中的qDebug () list.at(0) ) 0; list的第一个元素(8)打印clear以清除字符串
str='hello '; str.clear (; //之后,字符串为空的(9) indexOf函数在一个字符串中搜索另一个字符串,返回第一个出现的索引位置,如果找不到则返回-1。
QString x='sticky question '; QString y='sti '; x .索引关闭(y; //returns0x
.indexOf(y, 1); // returns 10x.indexOf(y, 10); // returns 10x.indexOf(y, 11); // returns -1(10)fill函数用于初始化字符串或给字符串赋值,将字符串中的每个字符设置为字符ch。如果字符串大小与(默认)不同,那么字符串就会预先调整大小。
QString str = "Berlin";str.fill('z');// str == "zzzzzz"str.fill('A', 2);// str == "AA"(11) insert函数用于在给定的索引位置插入字符串str,并返回对该字符串的引用。
QString str = "Meal";str.insert(1, QString("ontr"));// str == "Montreal"(12) isEmpty函数用于判断字符串是否为空,并返回判断结果
QString().isEmpty(); // returns trueQString("").isEmpty(); // returns trueQString("x").isEmpty(); // returns falseQString("abc").isEmpty(); // returns false(13) isNull效果和 isEmpty类似,如果该字符串为空,则返回true;否则返回false。
QString().isNull(); // returns trueQString("").isNull(); // returns falseQString("abc").isNull(); // returns false(14)length函数返回该字符串中的字符数。相当于size()。
(15)resize(size)函数用于将字符串的大小设置为size大小。
如果字符串长度大于当前长度,则将字符串扩展为size长度长,并将额外的字符添加到末尾,新字符未初始化。
如果大小小于当前大小,则从末尾删除字符。
(16)mid(int position, int n = -1)函数用于返回一个字符串,如果目标字符串包含从指定的位置索引开始的n个字符,则返回指定位置开始的由n个字符组成的字符串;如果位置索引超过了字符串的长度,则返回空字符串;如果从给定位置开始的字符串中有少于n个字符,或者如果n是-1(默认),函数将返回指定位置可用的所有字符。
QString x = "Nine pineapples";QString y = x.mid(5, 4); // y == "pine"QString z = x.mid(5); // z == "pineapples"(17)prepend(const QString & str)函数将字符串str预先设置为该字符串的开头,并返回对该字符串的引用。
QString x = "ship";QString y = "air";x.prepend(y);// x == "airship"(18)remove(int position, int n)函数用于从字符串中移除n个字符,从给定的位置开始,并返回对字符串的引用。
如果指定的位置索引在字符串中,但是position + n位于字符串的末尾,那么字符串将在指定位置被截断。
(19)replace(int position, int n, const QString & after)函数,用字符串替换从索引位置开始的n个字符,并返回对该字符串的引用。
注意:如果指定的位置索引在字符串中,但是position + n超出了字符串范围,那么n将会被调整到在字符串的末尾停止。
(20)setNum(int n, int base = 10)函数,将字符串设置为指定的打印值,并返回对字符串的引用。
默认值为10,必须在2到36之间。对于10以外的值,n被视为无符号整数。
(21)转换,相信这些很好理解
doubletoDouble(bool * ok = 0) constfloattoFloat(bool * ok = 0) constinttoInt(bool * ok = 0, int base = 10) constQByteArraytoLatin1() constQByteArraytoLocal8Bit() constlongtoLong(bool * ok = 0, int base = 10) constqlonglongtoLongLong(bool * ok = 0, int base = 10) constQStringtoLower() constNSString *toNSString() constshorttoShort(bool * ok = 0, int base = 10) conststd::stringtoStdString() conststd::wstringtoStdWString() constuinttoUInt(bool * ok = 0, int base = 10) constulongtoULong(bool * ok = 0, int base = 10) constqulonglongtoULongLong(bool * ok = 0, int base = 10) constushorttoUShort(bool * ok = 0, int base = 10) constQVector<uint>toUcs4() constQStringtoUpper() constQByteArraytoUtf8() const(22)QString与QDateTime的相互转换
1、QDateTime转为QString
2、QString转为QDateTime
QString str; QDateTime time; str = "2018-04-02 13:35:00"; time = QDateTime::fromString(str, "yyyy-MM-dd hh:mm:ss");( 23 )section()函数用于拆分字符串
QString QString::section ( QChar sep, int start, int end = -1, SectionFlags flags = SectionDefault ) const这个函数把字符串看成是几个块,这些块由 sep 分隔,start 和 end 指定块号,end 默认为 –1 ,返回的是[ start, end ]内的块组成的字符串,如果 start 和 end 都是负数,那么将从字符串的后面往前面数,返回 [ -end, –start ]内的块组成的字符串。SectionFlags是一些标记,如SectionSkipEmpty表示如果两个分隔符之间是空串,那么就会跳过。
QString str; QString csv = "forename,middlename,surname,phone"; QString path = "/usr/local/ygdrg/myapp"; // First field is empty QString::SectionFlag flag = QString::SectionSkipEmpty; str = csv.section(',', 2, 2); // str == "surname" qDebug()<<str; str = path.section('/', 2, 3); // str == "local/ygdrg" qDebug()<<str; str = path.section('/', 2, 4); // str == "local/ygdrg/myapp" qDebug()<<str; str = path.section('/', -4, -2); // str == "usr/local/ygdrg" qDebug()<<str; str = path.section('/', 3, 3, flag); // str == "myapp" qDebug()<<str;/usr/local/ygdrg/myapp按"/"拆分之后为四块 usr local ygdrg myapp
第二块到第三块,即"local/ygdrg",第二块到第四块即"local/ygdrg/myapp",第-4到第-2块【不能是第-2到第-4】,即"usr/local/ygdrg"
section还支持正则表达式:
QString line = "forenametmiddlename surname t t phone"; QRegExp sep("\s+"); str = line.section(sep, 2, 2); // s == "surname" str = line.section(sep, -3, -2); // s == "middlename surname"( 24 )startsWith()和 endsWith()函数用于判断字符串的开头或结尾是否为某个字符/字符串
QString str = "Bananas"; str.endsWith("anas"); // returns true str.endsWith("pple"); // returns false