所有的QString的方法都使用const char *參數,const char *被解釋爲經典的C風格的以零結尾的ASCII字符串。所以const char *參數爲0是合法的。如果const char *不是以零結尾的,結果是不確定的。把經典的C字符串複製到QString的函數將不會複製結尾的0字符。QString的QChar數組(可以通過unicode()返回)通常不以零結尾。如果你需要把QString傳遞到一個需要C的以零結尾的字符串,請使用latin1()。
QString::null是一個零QString。當排序的時候,空字符串在最前面,然後是非空字符串,然後纔是零字符串。我們建議使用if ( !str.isNull() ),而不是if ( !str )來檢測非零字符串,關於解釋說明也可以參考operator!()。
注意如果你發現你正在混合使用QCString、QString和QByteArray,這將會導致很多不必要的複製並且也許會預示着你正在處理的真實自然數據是不確定的。如果數據是以零結尾的八位數據,請使用QCString;如果它是沒有結尾的(也就是包含0)八位數據,請使用QByteArray;如果它是文本,請使用QString。
字符串列表可以使用QStringList類來處理。你可以使用QStringList::split()來把一個字符串分割爲一個字符串列表,並且可以使用QStringList::join()把一個字符串列表連接成一個使用隨意間隔符的字符串。你也可以使用QStringList::grep()從一個字符串列表中獲得包含特定子字符串或者包含匹配特定的regex的字符串列表。
C程序員的注意事項
由於C++的類型系統和QString是隱含共享的事實,QString也許會被看做整型或者其它簡單基本類型。例如:
QString boolToString( bool b ) { QString result; if ( b ) result = "True"; else result = "False"; return result; }
變量result是一個分配在棧中的自動變量。當return被調用時,因爲我們正在返回值,複製構造函數被調用並且這個字符串的一個複製被返回。(我們要感謝隱含共享,沒有實際的複製發生,請看下面。)
在Qt的源代碼中,你將會遇到想這樣的QString的用法:
QString func( const QString& input ) { QString output = input; // 處理輸出 return output; }
從input到output的“複製”幾乎和複製指針一樣快,因爲後面的場景複製是通過增加引用計數器來實現的。QString操作是基於寫時複製的,只有在實例發生實際改變時,纔會被複制。
如果你想不丟失任何Unicode信息的情況下創建一個QString的深度複製,那麼你應該使用QString中用QChar*作爲參數的構造函數。例如:
QString a("abcd"); QString b( a.unicode(), b.length() );
另外,使用QString中用const char*參數的構造函數就足夠了。例如:
QString a("abcd"); QString b( a.latin1() );
也可以參考QChar、QCString、QByteArray、QConstString、隱含和明顯共享類、文本相關類和非圖形用戶界面類。
成員類型文檔
section()。
成員函數文檔
isNull()。
QChar ch )
構造一個長度爲一個字符,內容爲給定字符ch的字符串。
QString & s )
構造一個s的隱含共享的複製。這是短時間的,因爲引用計數被使用。
QByteArray & ba )
構造一個被解釋爲經典C字符串的ba的深度複製的字符串。
QChar * unicode, uint length )
構造一個QChar數組中開始length個字符的深度複製的字符串。
如果unicode和length爲0,那麼一個零字符串被創建。
如果只是unicode爲0,字符串爲空,但是被分配爲length個字符空間——無論如何QString可以自動擴展,但是這也許會在一些情況下提高速度。我們建議根據這個目的使用簡單的構造函數和setLength(),因爲它的結果是有更多的可讀代碼。
深度複製的字符串。
如果str,那麼一個零字符串被創建。
這是一個拋出構造函數,但是它是完全安全的:把一個Latin1的const char*轉化到QString保存了所有的信息。當你編譯你的應用程序時,你可以通過定義QT_NO_CAST_ASCII來關閉這個構造函數。你可以使用setLatin1()、fromLatin1()、fromLocal8Bit()和fromUtf8()來生成QString。或者無論什麼適合你的八位數據的編碼方式。
也可以參考isNull()。
把str添加到字符串中並且返回結果的引用。
string = "Test"; string.append( "ing" ); // string == "Testing"
等於operator+=()。
QString & operator+=()。
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
把字符ch添加到字符串中並且返回結果的引用。
等於operator+=()。
QString QString & a, int fieldwidth = 0 ) const
這個函數將返回使用a來替換最低層出現的%i(i爲'1'或'2'或……'9')的字符串。
fieldwidth值指定了填充到a中的最小空間。正值將產生右對齊文本,負值將產生左對齊文本。
QString firstName( "Joe" ); QString lastName( "Bloggs" ); QString fullName; fullName = QString( "First name is '%1', last name is '%2'" ) .arg( firstName ) .arg( lastName ); // fullName == First name is 'Joe', last name is 'Bloggs'
警告:如果你是用arg()來構造一個想上面實例中的“真正”的句子,那麼這可能導致一些翻譯的問題(當你使用tr()函數時)。
如果沒有%i模式,一個警告信息(qWarning())被輸出並且這個文本被添加到字符串的末尾。這被做爲錯誤恢復的功能並且不應該在正確的代碼中出現。
也可以參考QObject::tr()。
QString QString( "Decimal 63 is %1 in hexadecimal" ) .arg( 63, 0, 16 ); // str == "Decimal 63 is 3f in hexadecimal"
QString QString QString QString QString QString QString QChar a, int fieldwidth = 0 ) const
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
QString QString( "'E' format, precision 3, gives %1" ) .arg( d, 0, 'E', 3 ); // ds == "1.234E+001"
const char * latin1()並且返回結果。
實例:network/networkprotocol/nntp.cpp。
QChar QChar ch = string.at( 4 ); // ch == 'e'
如果QString不是常量(也就是const QString)或者const&(也就是const QString&),那麼at()的非常量重載將被用來替代。
QCharRef QString & s1, const QString & s2 ) [靜態]
對s1和s2進行詞典比較,如果s1小於、等於或者大於s2,就返回小於、等於或者大於0的整數。
這個比較是專有的基於字符的數字Unicode值並且非常快,但是不是人們所期待的。排序用戶界面字符串請考慮使用QString::localeAwareCompare()。
int a = QString::compare( "def", "abc" ); // a > 0 int b = QString::compare( "abc", "def" ); // b < 0 int c = QString::compare(" abc", "abc" ); // c == 0
int QString & s ) const
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
對這個字符串和s進行詞典比較,如果它小於、等於或者大於s,就返回小於、等於或者大於0的整數。
void QChar(0x0041)('A')和QChar(0x0308)(Unicode accent diaresis),給定的QChar(0x00c4)(德語的A元音變音)。
等於at(i)。
也可以參考ref()。
int QChar c, bool cs = TRUE ) const
返回在這個字符串中字符c出現的次數。
如果cs爲真,那麼匹配是區分大小寫的。如果cs爲假,那麼匹配是不區分大小寫的。
QString string( "Trolltech and Qt" ); int i = string.contains( 't', FALSE ); // i == 3
實例:fileiconview/qfileiconview.cpp和mdi/application.cpp。
int QString & str, bool cs = TRUE ) const
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
返回在這個字符串中str出現的次數。
如果cs爲真,那麼匹配是區分大小寫的。如果cs爲假,那麼匹配是不區分大小寫的。
這個函數計算重疊的字符串,所以在下面的實例中,“bananas”中有兩個“ana”的實例。
QString str( "bananas" ); int i = str.contains( "ana" ); // i == 2
也可以參考findRev()。
int QRegExp & rx ) const
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
返回在字符串中正則表達式rx出現的次數。
這個函數計算重疊的字符串,所以在下面的實例中,有四個“ana”或者“ama”的實例。
QString str = "banana and panama"; QRegExp rxp = QRegExp( "a[nm]a", TRUE, FALSE ); int i = str.contains( rxp ); // i == 4
如果字符串以s結尾,返回真,否則返回假。
也可以參考startsWith()。
實例:chart/main.cpp。
QString & QChar c, int len = -1 )
填充字符串爲len個字符的值c,並且返回字符串的引用。
如果len爲負數(默認),當前字符串長度被使用。
QString str; str.fill( 'g', 5 ); // string == "ggggg"
int QRegExp & rx, int index = 0 ) const
從位置index開始,找到常量正則表達式rx第一次出現的位置。如果index爲-1,搜索從最後一個字符開始,如果是-1,從緊挨着最後一個字符的字符開始,依此類推。(對於反向搜索也可以參考findRev()。)
返回rx第一次出現的位置,如果rx沒有被找到,返回-1。
QString string( "bananas" ); int i = string.find( QRegExp("an"), 0 ); // i == 1
也可以參考findRev()、replace()和contains()。
int QChar c, int index = 0, bool cs = TRUE ) const
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
從位置index開始,找到字符c第一次出現的位置。如果index爲-1,搜索從最後一個字符開始,如果是-1,從緊挨着最後一個字符的字符開始,依此類推。(對於反向搜索也可以參考findRev()。)
如果cs爲真,那麼匹配是區分大小寫的。如果cs爲假,那麼匹配是不區分大小寫的。
返回c第一次出現的位置,如果c沒有被找到,返回-1。
int QString & str, int index = 0, bool cs = TRUE ) const
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
從位置index開始,找到字符串str第一次出現的位置。如果index爲-1,搜索從最後一個字符開始,如果是-1,從緊挨着最後一個字符的字符開始,依此類推。(對於反向搜索也可以參考findRev()。)
如果cs爲真,那麼匹配是區分大小寫的。如果cs爲假,那麼匹配是不區分大小寫的。
返回str第一次出現的位置,如果str沒有被找到,返回-1。
int find(QString(str), index)。
int findRev(QString(str), index)。
int QChar c, int index = -1, bool cs = TRUE ) const
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
從位置index開始並且反向搜索,找到字符c第一次出現的位置。如果index爲-1,搜索從最後一個字符開始,如果是-1,從緊挨着最後一個字符的字符開始,依此類推。
返回c第一次出現的位置,如果c沒有被找到,返回-1。
如果cs爲真,那麼匹配是區分大小寫的。如果cs爲假,那麼匹配是不區分大小寫的。
QString string( "bananas" ); int i = string.findRev( 'a' ); // i == 5
int QString & str, int index = -1, bool cs = TRUE ) const
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
從位置index開始並且反向搜索,找到字符串str第一次出現的位置。如果index爲-1,搜索從最後一個字符開始,如果是-1,從緊挨着最後一個字符的字符開始,依此類推。
返回str第一次出現的位置,如果str沒有被找到,返回-1。
如果cs爲真,那麼匹配是區分大小寫的。如果cs爲假,那麼匹配是不區分大小寫的。
QString string("bananas"); int i = string.findRev( "ana" ); // i == 3
int QRegExp & rx, int index = -1 ) const
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
從位置index開始並且反向搜索,找到正則表達式rx第一次出現的位置。如果index爲-1,搜索從最後一個字符開始,如果是-1,從緊挨着最後一個字符的字符開始,依此類推。
返回rx第一次出現的位置,如果rx沒有被找到,返回-1。
QString string( "bananas" ); int i = string.findRev( QRegExp("an") ); // i == 3
也可以參考find()。
QString fromLatin1( "123456789", 5 ); // str == "12345"
實例:listbox/listbox.cpp和network/mail/smtp.cpp。
QString fromLocal8Bit( "123456789", 5 ); // str == "12345"
local8Bit被假設使用本地指定的格式編碼的。
關於Unicode字符串的編碼/解碼更多變化請參考QTextCodec。
QString fromUtf8( "123456789", 5 ); // str == "12345"
關於Unicode字符串的編碼/解碼更多變化請參考QTextCodec。
實例:fonts/simple-qfont-demo/viewer.cpp。
把s插入到字符串的index位置之前。
如果index超過字符串的結尾,字符串被填充空格擴展到index長度並且然後s被添加,返回這個字符串的引用。
QString string( "I like fish" ); str = string.insert( 2, "don't " ); // str == "I don't like fish"
實例:themes/themes.cpp和xform/xform.cpp。
QString & QChar * s, uint len )
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
把s中的字符插入到字符串的index位置之前len次並且返回這個字符串的引用。
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
把c插入到字符串的index位置之前並且返回這個字符串的引用。
如果index超過字符串的結尾,字符串被填充空格(ASCII碼爲32)擴展到index長度並且然後s被添加,返回這個字符串的引用。
QString & length() == 0,返回真。因此,零字符串也是空字符串。
QString a( "" ); a.isEmpty(); // 真 a.isNull(); // 假 QString b; b.isEmpty(); // 真 b.isNull(); // 真
實例:addressbook/mainwindow.cpp、chart/chartform.cpp、chart/chartform_canvas.cpp、network/networkprotocol/nntp.cpp、qmag/qmag.cpp和qwerty/qwerty.cpp。
bool unicode() == 0,a.length() == 0 a.isNull(); // 真,因爲a.unicode() == 0 a.isEmpty(); // 真
實例:i18n/main.cpp和qdir/qdir.cpp。
const char * QTextCodec類。
這個函數主要對於使用Unicode的開機時的老程序有用處。
只要源字符串的一個未修改複製存在,這個結果就保持有效。
實例:fileiconview/qfileiconview.cpp和network/networkprotocol/nntp.cpp。
QString left( 4 ); // t == "Pine"
QString QChar fill = ' ', bool truncate = FALSE ) const
返回一個長度爲width的,包含這個字符串,並且用fill填補的字符串。
如果truncate爲假並且字符串的長度超過width,那麼返回的字符串是這個字符串的複製。
如果truncate爲真並且字符串的長度超過width,那麼這個字符串的複製中超過width長度的任何字符都被移除並且這個複製被返回。
QString s( "apple" ); QString t = s.leftJustify( 8, '.' ); // t == "apple..."
也可以參考rightJustify()。
實例:fileiconview/qfileiconview.cpp、network/networkprotocol/nntp.cpp、rot13/rot13.cpp和themes/themes.cpp。
QCString QTextCodec::codecForLocale()。在Windows上,它是系統定義的編碼方式。在Mac OS X上,總是使用utf8作爲編碼方式。
關於Unicode字符串的編碼/解碼更多變化請參考QTextCodec。
也可以參考QString::fromLocal8Bit()、latin1()和utf8()。
int QString & s1, const QString & s2 ) [靜態]
對s1和s2進行比較,如果s1小於、等於或者大於s2,就返回小於、等於或者大於0的整數。
這個比較是基於本地的並且也是基於平臺的方式。使用這個函數可以把排好序的字符串列表呈現給用戶。
也可以參考QString::compare()和QTextCodec::locale()。
int QString & s ) const
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
對這個字符串和s進行比較。
QString lower(); // str == "trolltech"
也可以參考upper()。
QString mid( 5, 4 ); // t == "pine"
實例:network/mail/smtp.cpp、qmag/qmag.cpp和themes/themes.cpp。
QString number( a, 16 ); // str == "3f" QString str = QString::number( a, 16 ).upper(); // str == "3F"
也可以參考setNum()。
實例:action/application.cpp、application/application.cpp、chart/chartform.cpp、fonts/simple-qfont-demo/viewer.cpp、mdi/application.cpp和sql/overview/extract/main.cpp。
QString QString( "'E' format, precision 3, gives %1" ) .arg( d, 0, 'E', 3 ); // ds == "1.234E+001"
也可以參考setNum()。
latin1()。請確定已經看到這裏的警告文檔。注意對於你希望嚴格遵守Unicode的新代碼,當你編譯你的代碼時,你可以定義QT_NO_ASCII_CAST宏來隱藏這個函數,這樣自動拋出就不會被完成。這樣可以添加你可以抓住在operator!()下描述的編程錯誤的優點。
bool isNull() ) doSomethingWith(name);
把str添加到字符串中並且返回結果的引用。
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
把字符c添加到字符串中並且返回結果的引用。
設置字符串只包含單個字符c。
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
把s的一個淺度複製賦值給這個字符串並且返回這個字符串的引用。這是非常快的,因爲字符串沒有被實際複製。
QString & 深度複製賦值給這個字符串並且返回這個字符串的引用。
如果str爲0,那麼零字符串被創建。
也可以參考isNull()。
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
把解釋爲經典C字符串的cs的一個深度複製賦值給這個字符串並且返回這個字符串的引用。
QString & QChar QCharRef QCharRef就可以引用字符串中的有效(零)字符。
QCharRef內部類可以被常量QChar使用,但是如果你對它賦值,你就會改變初始字符串(它將會自動分離,因爲QString是寫時複製)。如果你試圖把結果作爲QChar以外的東西使用,你將得到編譯錯誤。
在字符串開始處插入s並且返回這個字符串的引用。
等於insert(0, s)。
QString string = "42"; string.prepend( "The answer is " ); // string == "The answer is 42"
也可以參考insert()。
也可以參考insert()。
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
在字符串開始處插入ch並且返回這個字符串的引用。
等於insert(0, ch)。
也可以參考insert()。
QChar & QChar的引用,如果需要就是用QChar::null擴展字符串。這個結果引用可以立即被賦值或者使用,但是一旦初始字符串發生了改變,它將會變爲無效。
QString string("ABCDEF"); QChar ch = string.ref( 3 ); // ch == 'D'
也可以參考constref()。
QString & remove( 1, 4 ); // string == "Meal"
從字符串中的index位置開始使用s替換len個字符,並且返回這個字符串的引用。
如果index超出字符串的長度,就什麼也不被刪除並且s被添加到字符串結尾。如果 index有效並且index加上len超過字符串的結尾,那麼這個字符串將從index開始被截短,並且s被添加到字符串結尾。
QString string( "Say yes!" ); string = string.replace( 4, 3, "NO" ); // string == "Say NO!"
實例:listviews/listviews.cpp、network/networkprotocol/nntp.cpp和qmag/qmag.cpp。
QString & QChar * s, uint slen )
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
從字符串中的index位置開始使用s中的slen個字符的QChar數據替換len個字符,並且返回這個字符串的引用。
QString & QRegExp & rx, const QString & str )
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
用str替換字符串中出現的每一個正則表達式rx。返回這個字符串的引用。
QString string = "banana"; string = string.replace( QRegExp("an"), "" ); // string == "ba"
QString right( 5 ); // t == "apple"
實例:fileiconview/qfileiconview.cpp。
QString QChar fill = ' ', bool truncate = FALSE ) const
返回一個長度爲width的,包含fill填補的字符串,後面跟着這個字符串。
如果truncate爲假並且字符串的長度超過width,那麼返回的字符串是這個字符串的複製。
如果truncate爲真並且字符串的長度超過width,那麼這個字符串的複製中超過width長度的任何字符都被移除並且這個複製被返回。
QString string( "apple" ); QString t = string.rightJustify( 8, '.' ); // t == "...apple"
也可以參考leftJustify()。
QString QChar sep, int start, int end = 0xffffffff, int flags = SectionDefault ) const
這個函數用來返回字符串的一部分。
這個字符串被看作由字符sep分隔開的順序的區段。返回的從位置start到位置end(兩個都包含)的區段組成的字符串。如果end沒有被指定,那麼從位置start開始到字符串的結尾的所有區段都被返回。區段是從左面是0、1、2等等計數,或者從右面-1、-2等等計數的。
flags參數可以用來影響這個函數行爲的特徵,例如是否區分大小寫,是否忽略空區段並且如何處理開始和結尾的分隔符,請參考SectionFlags。
QString csv( "forename,middlename,surname,phone" ); QString s = csv.section( ',', 2, 2 ); // s == "surname" QString path( "/usr/local/bin/myapp" ); // First field is empty QString s = path.section( '/', 3, 4 ); // s == "bin/myapp" QString s = path.section( '/', 3, 3, SectionSkipEmpty ); // s == "myapp"
如果start或者end爲負數,我們就從字符串的右面開始計數,最右面的是-1,接着是-2,依此類推。
QString csv( "forename,middlename,surname,phone" ); QString s = csv.section( ',', -3, -2 ); // s == "middlename,surname" QString path( "/usr/local/bin/myapp" ); // First field is empty QString s = path.section( '/', -1 ); // s == "myapp"
也可以參考QStringList::split()。
QString QString QString QString & sep, int start, int end = 0xffffffff, int flags = SectionDefault ) const
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
這個函數用來返回字符串的一部分。
這個字符串被看作由字符串sep分隔開的順序的區段。返回的從位置start到位置end(兩個都包含)的區段組成的字符串。如果end沒有被指定,那麼從位置start開始到字符串的結尾的所有區段都被返回。區段是從左面是0、1、2等等計數,或者從右面-1、-2等等計數的。
flags參數可以用來影響這個函數行爲的特徵,例如是否區分大小寫,是否忽略空區段並且如何處理開始和結尾的分隔符,請參考SectionFlags。
QString data( "forename**middlename**surname**phone" ); QString s = data.section( "**", 2, 2 ); // s == "surname"
如果start或者end爲負數,我們就從字符串的右面開始計數,最右面的是-1,接着是-2,依此類推。
QString data( "forename**middlename**surname**phone" ); QString s = data.section( "**", -3, -2 ); // s == "middlename**surname"
也可以參考QStringList::split()。
QString QRegExp & reg, int start, int end = 0xffffffff, int flags = SectionDefault ) const
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
這個函數用來返回字符串的一部分。
這個字符串被看作由正則表達式reg分隔開的順序的區段。返回的從位置start到位置end(兩個都包含)的區段組成的字符串。如果end沒有被指定,那麼從位置start開始到字符串的結尾的所有區段都被返回。區段是從左面是0、1、2等等計數,或者從右面-1、-2等等計數的。
flags參數可以用來影響這個函數行爲的特徵,例如是否區分大小寫,是否忽略空區段並且如何處理開始和結尾的分隔符,請參考SectionFlags。
QString line( "forename/tmiddlename surname /t /t phone" ); QRegExp sep( "/s+" ); QString s = line.section( sep, 2, 2 ); // s == "surname"
如果start或者end爲負數,我們就從字符串的右面開始計數,最右面的是-1,接着是-2,依此類推。
QString line( "forename/tmiddlename surname /t /t phone" ); QRegExp sep( "//s+" ); QString s = line.section( sep, -3, -2 ); // s == "middlename surname"
警告: QRegExp這一部分比其它字符串和字符的重載版本要花費更多。
也可以參考QStringList::split()和simplifyWhiteSpace()。
void QChar c )
這個函數是廢棄的。它的提供只是爲了保證舊代碼能夠工作。我們強烈建議在新代碼中不要使用它。
設置在index位置的字符爲c並且如果需要使用空格來擴展這個字符串。
這個方法在Qt 3.x中是多餘的,因爲operator[]可以在需要的時候擴展字符串。
void setLength( newLen ) // 分配一些空間 while ( ... ) { result[resultLength++] = ... // 填充(部分的)空格作爲數據 } result.truncate[resultLength]; // 並且去掉不確定的垃圾
如果newLen是不足的話,最壞的情況就是將會循環將會變慢。
也可以參考truncate()、isNull()、isEmpty()和length()。
QString & setNum( 1234 ); // string == "1234"
QString & QString & QString & QString & QString & QString & arg()。
QString & QChar * unicode, uint len )
重新定義字符串的大小爲len並且把unicode複製到字符串中。如果unicode爲零,什麼都不被複制,但是字符串還是被重新定義爲len。如果len爲0,那麼字符串變爲零字符串。
QString QChar::isSpace()返回真的字符。這裏麪包括十進制爲9(TAB)、10(LF)、11(VT)、12(FF)、13(CR)和32(Space)的UNICODE字符。
QString string = " lots/t of/nwhite space "; QString t = string.simplifyWhiteSpace(); // t == "lots of white space"
也可以參考stripWhiteSpace()。
QString & utf8()編碼字符串。格式化字符串cformat希望是一個Latin1的。如果你需要一個Unicode格式字符串,使用arg()來替代。爲了完全支持Unicode的類型安全的字符串構建,你可以像這樣使用QTextOStream:
QString str; QString s = ...; int x = ...; QTextOStream( &str ) << s << " : " << x;
對於翻譯,特別是如果字符串包含超過一個的轉義序列,你應該考慮使用arg()來替代它。這將允許翻譯者來控制替換的順序並且支持Unicode。
也可以參考arg()。
實例:dclock/dclock.cpp、forever/forever.cpp、layout/layout.cpp、qmag/qmag.cpp、scrollview/scrollview.cpp、tooltip/tooltip.cpp和xform/xform.cpp。
bool QString & s ) const
如果字符串以s開始,返回真,否則返回假。
QString string("Bananas"); bool a = string.startsWith("Ban"); // a == TRUE
也可以參考endsWith()。
QString QChar::isSpace()返回真的字符。這裏麪包括十進制爲9(TAB)、10(LF)、11(VT)、12(FF)、13(CR)和32(Space)的UNICODE字符。
QString string = " white space "; QString s = string.stripWhiteSpace(); // s == "white space"
也可以參考simplifyWhiteSpace()。
double toDouble(); // a == 1234.56
也可以參考number()。
float number()。
int toInt( &ok, 16 ); // hex == 255, ok == TRUE int dec = str.toInt( &ok, 10 ); // dec == 0, ok == FALSE
也可以參考number()。
long number()。
short number()。
ulong number()。
ushort truncate( 5 ); // s == "trunc"
也可以參考setLength()。
const QChar * QString upper(); // t == "TEXT"
也可以參考lower()。
實例:scribble/scribble.cpp和sql/overview/custom1/main.cpp。
也可以參考QString::fromUtf8()、local8Bit()和latin1()。
相關函數
bool QString & s1, const QString & s2 )
如果s1在詞典中不等於s2,返回真,否則如果不是,返回假。這個比較是區分大小寫的。注意一個零字符串不等於一個非零的空字符串。
等於compare(s1, s2) != 0。
bool QString & s1, const char * s2 )
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
如果s1在詞典中不等於s2,返回真,否則如果不是,返回假。這個比較是區分大小寫的。注意一個零字符串不等於一個非零的空字符串。
等於compare(s1, s2) != 0。
bool QString & s2 )
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
如果s1在詞典中不等於s2,返回真,否則如果不是,返回假。這個比較是區分大小寫的。注意一個零字符串不等於一個非零的空字符串。
等於compare(s1, s2) != 0。
const QString QString & s1, const QString & s2 )
返回字符串s1和字符串s2連接的結果的字符串。
等於s1.append(s2)。
const QString QString & s1, const char * s2 )
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
返回字符串s1和字符串s2連接的結果的字符串。
等於s1.append(s2)。
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
返回字符串s1和字符串s2連接的結果的字符串。
const QString QString & s, char c )
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
返回字符串s和字符c連接的結果的字符串。
等於s.append(c)。
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
返回字符c和字符串s連接的結果的字符串。
等於s.prepend(c)。
bool QString & s1, const char * s2 )
如果s1在詞典中小於s2,返回真,否則如果不是,返回假。這個比較是區分大小寫的。注意一個零字符串不等於一個非零的空字符串。
等於compare(s1, s2) < 0。
bool QString & s2 )
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
如果s1在詞典中小於s2,返回真,否則如果不是,返回假。這個比較是區分大小寫的。注意一個零字符串不等於一個非零的空字符串。
等於compare(s1, s2) < 0。
QDataStream & QDataStream & s, const QString & str )
把字符串str寫到流s中。
也可以參考QDataStream操作符的格式。
bool QString & s1, const char * s2 )
如果s1在詞典中小於或等於s2,返回真,否則如果不是,返回假。這個比較是區分大小寫的。注意一個零字符串不等於一個非零的空字符串。
等於compare(s1,s2) <= 0。
bool QString & s2 )
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
如果s1在詞典中小於或等於s2,返回真,否則如果不是,返回假。這個比較是區分大小寫的。注意一個零字符串不等於一個非零的空字符串。
等於compare(s1,s2) <= 0。
bool QString & s1, const QString & s2 )
如果s1在詞典中等於s2,返回真,否則如果不是,返回假。這個比較是區分大小寫的。注意一個零字符串不等於一個非零的空字符串。
等於compare(s1, s2) != 0。
bool QString & s1, const char * s2 )
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
如果s1在詞典中等於s2,返回真,否則如果不是,返回假。這個比較是區分大小寫的。注意一個零字符串不等於一個非零的空字符串。
等於compare(s1, s2) != 0。
bool QString & s2 )
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
如果s1在詞典中等於s2,返回真,否則如果不是,返回假。這個比較是區分大小寫的。注意一個零字符串不等於一個非零的空字符串。
等於compare(s1, s2) != 0。
bool QString & s1, const char * s2 )
如果s1在詞典中大於s2,返回真,否則如果不是,返回假。這個比較是區分大小寫的。注意一個零字符串不等於一個非零的空字符串。
等於compare(s1, s2) > 0。
bool QString & s2 )
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
如果s1在詞典中大於s2,返回真,否則如果不是,返回假。這個比較是區分大小寫的。注意一個零字符串不等於一個非零的空字符串。
等於compare(s1, s2) > 0。
bool QString & s1, const char * s2 )
如果s1在詞典中大於或等於s2,返回真,否則如果不是,返回假。這個比較是區分大小寫的。注意一個零字符串不等於一個非零的空字符串。
等於compare(s1, s2) >= 0。
bool QString & s2 )
這是一個重載成員函數,提供了方便。它的行爲基本上和上面的函數相同。
如果s1在詞典中大於或等於s2,返回真,否則如果不是,返回假。這個比較是區分大小寫的。注意一個零字符串不等於一個非零的空字符串。
等於compare(s1, s2) >= 0。
QDataStream & QDataStream & s, QString & str )
從流s中讀取一個字符串到字符串str中。
也可以參考QDataStream操作符的格式。