QT学习:字符串类QString
標準C++提供了兩種字符串:一種是c語言風格的以“\0”字符結(jié)尾的字符數(shù)組:另一種是字符串類String。而Qt字符串類QString的功能更強大。
QString類保存16位Unicode值,提供了豐富的操作、查詢和轉(zhuǎn)換等函數(shù)。該類還進行了使用隱式共享高效的內(nèi)存分配策略等多方面的優(yōu)化。
一、操作字符串
字符串有如下幾個操作符。
(1)”+“操作符用于組合兩個字符串,并提供了一個”+=“操作符用于將一個字符串追加到另一個字符串的末尾,代碼如圖所示:
(2)QString::append()函數(shù)具有與“+=”操作符同樣的功能,也是在一個字符串的末尾追加另一個字符串,代碼如下:
QString str1= "Welcome "; Qstring str2 = "to "; str1.append(str2); str1. append("you!"); //str1=”Welcome to you!"(3)QString::sprintf()的功能是組合字符串,此函數(shù)支持的格式定義符與c++中的sprintf()是一樣的,代碼如下:
QString str; str.sprintf ("%s"," welcome ") ;//str=" welcome " str.sprintf ("%s",”to you! ") ;//str=”to you! " str.sprintf ("%s%s", ”Welcome ","to you! ") ;//str=”Welcome to you! "(4)QString::arg()函數(shù)是另一種方便的字符串組合方式, 此函數(shù)的重載可以處理很多的數(shù)據(jù)類型。此外,一些重載具有額外的參數(shù)對字段的寬度、數(shù)字基數(shù)或者浮點數(shù)精度進行控制。通常,相對于QString::sprintf()函數(shù),QStrig:arg()函數(shù)是個比較好的解決方案,因為其類型安全,完全支持Unicode,并且允許改變"%n"參數(shù)的順序。例如:
QString str; str=QString("%1 was born in %2.") .arg ("John") .arg(1998) ;//str="John was born in1998.”(5)其它組合字符串的方法:
insert()函數(shù):在原字符串特定的位置插入身個字符串。
prepend()函數(shù):在原字符串的開頭插入另一個字符串。
replace()函數(shù):用指定的字符串代替原字符事中的某些字符。
(6)有時我們需要取出字符串兩端的空白
QString:trimmed()函數(shù):移除字符串兩端的空白字符。
QString:simplifed()函數(shù):移除字符串兩端的空白字符,使用單個空格字符“ ”代替字符串中出現(xiàn)的空白字符。
例如:
在上述代碼中,如果使用str=str.simplified(), 則str的結(jié)果是“Welcome to you!"。
二、查詢字符串數(shù)據(jù)
(1)QString::startsWith()函數(shù):判斷一個字符串是否以某個字符串開頭。此函數(shù)具有兩個參數(shù)。第一個參數(shù)指定了一 個字符串,第二個參數(shù)指定是否大小寫敏感(默認情況下,是大小寫敏感的),代碼如下:
QString str="Welcome to you! "; str. startsWith ("Welcome" , Qt: :CaseSensitive); / /返回true str.startsWith ("you", Qt: :CaseSensitive) ;/ /返回false(2)QString::endsWith()函數(shù):類似于QString::startsWith()函數(shù),此函數(shù)的作用是判斷一個字符串是否以某個字符串結(jié)尾。
(3) QString:contains()函數(shù);判斷一個指定的字符串是否出現(xiàn)過,代碼如下:
(4)
operator<(const QString&):比較一個字符串是否小于另一個字符串。如果是,則返回true。
operator<=(const QString&):比較一個字符串是否小于等于另一個字符串。 如果是,則返回true。
operator==(const QString&):比較兩個字符串是否相等。如果相等,則返回true,
operator>=(const QString&)::比較一個字符串是否大于等于另 一個字符串。如果是,則返回true。
localeAwareCompare(const QString&,const QString&):靜態(tài)函數(shù),比較前后兩個字符串。如果前面字符串小于后面字符串,則返回負整數(shù)值;如果等于則返回0;如果大于則返回正整數(shù)值。
compare(constQString&,constQString&,Qt:CaseSensitivity):該函數(shù)可以指定是否進行大小寫的比較。
三、字符串的轉(zhuǎn)換
(1)Qtring:tolnt0函數(shù):將字符串轉(zhuǎn)換為整型數(shù)值,類似函數(shù)還有toFloat()、toDonble()、toLong()、toLongLong()等。代碼如下:
QString str="125"; bool ok; int hex=str. toInt (&ok,16) ;//ok=true,hex= 299 int dec=str. toInt (&ok, 10) ;//ok=true, dec=125(2 )QString提供的字符編碼集的轉(zhuǎn)換函數(shù)將會返回個const char* 類型版本的QByteArray。轉(zhuǎn)換函數(shù)有如下幾種:
toAscii():返回一個ASCII編碼的8位字符串。
toLatin1:返回一個Latin-1 編碼的8位字符串。
toUtf8():返回一個UTF-8編碼的8位字符串。
toLocal8Bit():返回一個系統(tǒng)本地編碼的8位字符串。
總結(jié)
以上是生活随笔為你收集整理的QT学习:字符串类QString的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QT学习:概念解析
- 下一篇: QT学习:容器类及QVariant类