?? qstring.html
字號:
<li><div class=fn>QString <a href="#number-5"><b>number</b></a> ( double n, char f = 'g', int prec = 6 )</div></li>
<li><div class=fn>QString <a href="#fromLatin1"><b>fromLatin1</b></a> ( const char * chars, int len = -1 )</div></li>
<li><div class=fn>QString <a href="#fromUtf8"><b>fromUtf8</b></a> ( const char * utf8, int len = -1 )</div></li>
<li><div class=fn>QString <a href="#fromLocal8Bit"><b>fromLocal8Bit</b></a> ( const char * local8Bit, int len = -1 )</div></li>
<li><div class=fn>int <a href="#compare"><b>compare</b></a> ( const QString & s1, const QString & s2 )</div></li>
<li><div class=fn>int <a href="#localeAwareCompare"><b>localeAwareCompare</b></a> ( const QString & s1, const QString & s2 )</div></li>
</ul>
<h2>相關函數</h2>
<ul>
<li><div class=fn>bool <a href="#operator-eq-eq"><b>operator==</b></a> ( const QString & s1, const QString & s2 )</div></li>
<li><div class=fn>bool <a href="#operator-eq-eq-2"><b>operator==</b></a> ( const QString & s1, const char * s2 )</div></li>
<li><div class=fn>bool <a href="#operator-eq-eq-3"><b>operator==</b></a> ( const char * s1, const QString & s2 )</div></li>
<li><div class=fn>bool <a href="#operator!-eq"><b>operator!=</b></a> ( const QString & s1, const QString & s2 )</div></li>
<li><div class=fn>bool <a href="#operator!-eq-2"><b>operator!=</b></a> ( const QString & s1, const char * s2 )</div></li>
<li><div class=fn>bool <a href="#operator!-eq-3"><b>operator!=</b></a> ( const char * s1, const QString & s2 )</div></li>
<li><div class=fn>bool <a href="#operator-lt"><b>operator<</b></a> ( const QString & s1, const char * s2 )</div></li>
<li><div class=fn>bool <a href="#operator-lt-2"><b>operator<</b></a> ( const char * s1, const QString & s2 )</div></li>
<li><div class=fn>bool <a href="#operator-lt-eq"><b>operator<=</b></a> ( const QString & s1, const char * s2 )</div></li>
<li><div class=fn>bool <a href="#operator-lt-eq-2"><b>operator<=</b></a> ( const char * s1, const QString & s2 )</div></li>
<li><div class=fn>bool <a href="#operator-gt"><b>operator></b></a> ( const QString & s1, const char * s2 )</div></li>
<li><div class=fn>bool <a href="#operator-gt-2"><b>operator></b></a> ( const char * s1, const QString & s2 )</div></li>
<li><div class=fn>bool <a href="#operator-gt-eq"><b>operator>=</b></a> ( const QString & s1, const char * s2 )</div></li>
<li><div class=fn>bool <a href="#operator-gt-eq-2"><b>operator>=</b></a> ( const char * s1, const QString & s2 )</div></li>
<li><div class=fn>const QString <a href="#operator+"><b>operator+</b></a> ( const QString & s1, const QString & s2 )</div></li>
<li><div class=fn>const QString <a href="#operator+-2"><b>operator+</b></a> ( const QString & s1, const char * s2 )</div></li>
<li><div class=fn>const QString <a href="#operator+-3"><b>operator+</b></a> ( const char * s1, const QString & s2 )</div></li>
<li><div class=fn>const QString <a href="#operator+-4"><b>operator+</b></a> ( const QString & s, char c )</div></li>
<li><div class=fn>const QString <a href="#operator+-5"><b>operator+</b></a> ( char c, const QString & s )</div></li>
<li><div class=fn>QDataStream & <a href="#operator-lt-lt"><b>operator<<</b></a> ( QDataStream & s, const QString & str )</div></li>
<li><div class=fn>QDataStream & <a href="#operator-gt-gt"><b>operator>></b></a> ( QDataStream & s, QString & str )</div></li>
</ul>
<hr><a name="details"></a><h2>詳細描述</h2>
<p>QString類提供了一個Unicode文本和經典的C以零結尾的字符數組的抽象。
<p> QString使用<a href="shclass.html">隱含共享</a>,這使它非常有效率并且很容易使用。
<p> 所有的QString的方法都使用<tt>const char *</tt>參數,<tt>const char *</tt>被解釋為經典的C風格的以零結尾的ASCII字符串。所以<tt>const char *</tt>參數為0是合法的。如果<tt>const char *</tt>不是以零結尾的,結果是不確定的。把經典的C字符串復制到QString的函數將不會復制結尾的0字符。QString的<a href="qchar.html">QChar</a>數組(可以通過<a href="#unicode">unicode</a>()返回)通常不以零結尾。如果你需要把QString傳遞到一個需要C的以零結尾的字符串,請使用<a href="#latin1">latin1</a>()。
<p> <!-- index QString::null --><a name="QString-null"></a>沒有分配任何東西的QString是<em>零</em>,也就是長度和數據指針都為0。引用空字符串(“”,一個單一的'\0'字符)的QString是<em>空</em>。零和空這兩個QString在方法中都是合法的。把<tt>(const char *) 0</tt>賦值給QString給定了一個零QString。為了方便,<a href="qstring.html#QString-null">QString::null</a>是一個零QString。當排序的時候,空字符串在最前面,然后是非空字符串,然后才是零字符串。我們建議使用<tt>if ( !str.isNull() )</tt>,而不是<tt>if ( !str )</tt>來檢測非零字符串,關于解釋說明也可以參考<a href="#operator!">operator!</a>()。
<p> 注意如果你發現你正在混合使用<a href="qcstring.html">QCString</a>、QString和<a href="qbytearray.html">QByteArray</a>,這將會導致很多不必要的復制并且也許會預示著你正在處理的真實自然數據是不確定的。如果數據是以零結尾的八位數據,請使用<a href="qcstring.html">QCString</a>;如果它是沒有結尾的(也就是包含0)八位數據,請使用<a href="qbytearray.html">QByteArray</a>;如果它是文本,請使用QString。
<p> 字符串列表可以使用<a href="qstringlist.html">QStringList</a>類來處理。你可以使用<a href="qstringlist.html#split">QStringList::split</a>()來把一個字符串分割為一個字符串列表,并且可以使用<a href="qstringlist.html#join">QStringList::join</a>()把一個字符串列表連接成一個使用隨意間隔符的字符串。你也可以使用<a href="qstringlist.html#grep">QStringList::grep</a>()從一個字符串列表中獲得包含特定子字符串或者包含匹配特定的<a href="qregexp.html">regex</a>的字符串列表。
<p> <b>C程序員的注意事項</b>
<p> 由于C++的類型系統和QString是<a href="shclass.html#implicitly-shared">隱含共享</a>的事實,QString也許會被看做整型或者其它簡單基本類型。例如:
<p> <pre>
QString boolToString( bool b )
{
QString result;
if ( b )
result = "True";
else
result = "False";
return result;
}
</pre>
<p> 變量result是一個分配在棧中的自動變量。當return被調用時,因為我們正在返回值,復制構造函數被調用并且這個字符串的一個復制被返回。(我們要感謝<a href="shclass.html#implicit-sharing">隱含共享</a>,沒有實際的復制發生,請看下面。)
<p> 在Qt的源代碼中,你將會遇到想這樣的QString的用法:
<pre>
QString func( const QString& input )
{
QString output = input;
// 處理輸出
return output;
}
</pre>
<p> 從input到output的“復制”幾乎和復制指針一樣快,因為后面的場景復制是通過增加引用計數器來實現的。QString操作是基于寫時復制的,只有在實例發生實際改變時,才會被復制。
<p> 如果你想不丟失任何Unicode信息的情況下創建一個QString的<a href="shclass.html#deep-copy">深度復制</a>,那么你應該使用QString中用<a href="qchar.html">QChar</a>*作為參數的構造函數。例如:
<p> <pre>
QString a("abcd");
QString b( a.<a href="#unicode">unicode</a>(), b.<a href="#length">length</a>() );
</pre>
<p> 另外,使用QString中用const char*參數的構造函數就足夠了。例如:
<p> <pre>
QString a("abcd");
QString b( a.<a href="#latin1">latin1</a>() );
</pre>
<p> <p>也可以參考<a href="qchar.html">QChar</a>、<a href="qcstring.html">QCString</a>、<a href="qbytearray.html">QByteArray</a>、<a href="qconststring.html">QConstString</a>、<a href="shared.html">隱含和明顯共享類</a>、<a href="text.html">文本相關類</a>和<a href="tools.html">非圖形用戶界面類</a>。
<hr><h2>成員類型文檔</h2>
<h3 class=fn><a name="SectionFlags-enum"></a>QString::SectionFlags</h3>
<ul>
<li><tt>QString::SectionDefault</tt> - 空的部分被考慮,開始的和結尾的分隔符不被包含并且區分大小寫來比較分隔符。
<li><tt>QString::SectionSkipEmpty</tt> - 把空的部分看做就像它們不存在一樣,也就是說它們不被考慮為有關的<em>start</em>和<em>end</em>。
<li><tt>QString::SectionIncludeLeadingSep</tt> - 在結果字符串中包含開始的分隔符(如果有的話)。
<li><tt>QString::SectionIncludeTrailingSep</tt> - 在結果字符串中包含末尾的分隔符(如果有的話)。
<li><tt>QString::SectionCaseInsensitiveSeps</tt> - 不區分大小寫來比較分隔符。
</ul><p> 最后的四個值可以被或運算在一起來形成一個標記。
<p> <p>也可以參考<a href="#section">section</a>()。
<hr><h2>成員函數文檔</h2>
<h3 class=fn><a name="QString"></a>QString::QString ()
</h3>
<p> 構造一個零字符串。這是一個不被分配任何東西的字符串,也就是說長度和數據指針都為0。
<p> <p>也可以參考<a href="#isNull">isNull</a>()。
<h3 class=fn><a name="QString-2"></a>QString::QString ( <a href="qchar.html">QChar</a> ch )
</h3>
構造一個長度為一個字符,內容為給定字符<em>ch</em>的字符串。
<h3 class=fn><a name="QString-3"></a>QString::QString ( const <a href="qstring.html">QString</a> & s )
</h3>
構造一個<em>s</em>的<a href="shclass.html#implicitly-shared">隱含共享</a>的復制。這是短時間的,因為<a href="shclass.html#reference-counting">引用計數</a>被使用。
<h3 class=fn><a name="QString-4"></a>QString::QString ( const <a href="qbytearray.html">QByteArray</a> & ba )
</h3>
構造一個被解釋為經典C字符串的<em>ba</em>的<a href="shclass.html#deep-copy">深度復制</a>的字符串。
<h3 class=fn><a name="QString-5"></a>QString::QString ( const <a href="qchar.html">QChar</a> * unicode, uint length )
</h3>
構造一個<a href="qchar.html">QChar</a>數組中開始<em>length</em>個字符的<a href="shclass.html#deep-copy">深度復制</a>的字符串。
<p> 如果<em>unicode</em>和<em>length</em>為0,那么一個零字符串被創建。
<p> 如果只是<em>unicode</em>為0,字符串為空,但是被分配為<em>length</em>個字符空間——無論如何QString可以自動擴展,但是這也許會在一些情況下提高速度。我們建議根據這個目的使用簡單的構造函數和<a href="#setLength">setLength</a>(),因為它的結果是有更多的可讀代碼。
<p> <p>也可以參考<a href="#isNull">isNull</a>()和<a href="#setLength">setLength</a>()。
<h3 class=fn><a name="QString-6"></a>QString::QString ( const char * str )
</h3>
構造一個被解釋為經典C字符串的<em>str</em>的<a href="shclass.html#deep-copy">深度復制</a>的字符串。
<p> 如果<em>str</em>,那么一個零字符串被創建。
<p> 這是一個拋出構造函數,但是它是完全安全的:把一個Latin1的const char*轉化到QString保存了所有的信息。當你編譯你的應用程序時,你可以通過定義QT_NO_CAST_ASCII來關閉這個構造函數。你可以使用<a href="#setLatin1">setLatin1</a>()、<a href="#fromLatin1">fromLatin1</a>()、<a href="#fromLocal8Bit">fromLocal8Bit</a>()和<a href="#fromUtf8">fromUtf8</a>()來生成QString?;蛘邿o論什么適合你的八位數據的編碼方式。
<p> <p>也可以參考<a href="#isNull">isNull</a>()。
<h3 class=fn><a name="~QString"></a>QString::~QString ()
</h3>
<p> 銷毀這個字符串并且如果這是這個字符串的最后一個復制,就釋放“真實的”字符串。
<h3 class=fn><a href="qstring.html">QString</a> & <a name="append"></a>QString::append ( const <a href="qstring.html">QString</a> & str )
</h3>
把<em>str</em>添加到字符串中并且返回結果的引用。
<p> <pre>
string = "Test";
string.append( "ing" ); // string == "Testing"
</pre>
<p> 等于<a href="#operator+-eq">operator+=</a>()。
<p>實例:<a href="dirview-example.html#x1739">dirview/dirview.cpp</a>。
<h3 class=fn><a href="qstring.html">QString</a> & <a name="append-2"></a>QString::append ( char ch )
</h3>
這是一個重載成員函數,提供了方便。它的行為基本上和上面的函數相同。
<p> 把字符<em>ch</em>添加到字符串中并且返回結果的引用。
<p> 等于<a href="#operator+-eq">operator+=</a>()。
<h3 class=fn><a href="qstring.html">QString</a> & <a name="append-3"></a>QString::append ( <a href="qchar.html">QChar</a> ch )
</h3>
這是一個重載成員函數,提供了方便。它的行為基本上和上面的函數相同。
<p> 把字符<em>ch</em>添加到字符串中并且返回結果的引用。
<p> 等于<a href="#operator+-eq">operator+=</a>()。
<h3 class=fn><a href="qstring.html">QString</a> <a name="arg"></a>QString::arg ( const <a href="qstring.html">QString</a> & a, int fieldwidth = 0 ) const
</h3>
<p> 這個函數將返回使用<em>a</em>來替換最低層出現的<tt>%i</tt>(<tt>i</tt>為'1'或'2'或……'9')的字符串。
<p> <em>fieldwidth</em>值指定了填充到<em>a</em>中的最小空間。正值將產生右對齊文本,負值將產生左對齊文本。
<p> <pre>
QString firstName( "Joe" );
QString lastName( "Bloggs" );
QString fullName;
fullName = <a href="#QString">QString</a>( "First name is '%1', last name is '%2'" )
.arg( firstName )
.arg( lastName );
// fullName == First name is 'Joe', last name is 'Bloggs'
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -