www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 芯聞號 > 充電吧
[導(dǎo)讀]QString 類是 Qt 中用于表示字符串的類,實現(xiàn)在 QtCore 共享庫中。QString 類在實現(xiàn)上有以下特征。1)字符串采用 Unicode 內(nèi)部編碼,可以表示世界上大多數(shù)語言的文字。2)字

QString 類是 Qt 中用于表示字符串的類,實現(xiàn)在 QtCore 共享庫中。QString 類在實現(xiàn)上有以下特征。

1)字符串采用 Unicode 內(nèi)部編碼,可以表示世界上大多數(shù)語言的文字。

2)字符串的存儲有引用計數(shù),當(dāng)一個 QString 對象被復(fù)制為另一個 QString 對象時,它們實際上指向相同的存儲空間,僅僅是增加一個引用計數(shù)。

?3)采用 “按需復(fù)制” 的技術(shù),當(dāng)指向相同存儲空間的多個 QString 對象中的一個要被修改時,將真正復(fù)制一個新的字符串并進(jìn)行修改。


構(gòu)造

QString 類提供了很多不同原型的構(gòu)造函數(shù)以方便使用。如:



Qstring();????????????????????????????????????????//?構(gòu)造空字符串
QString(QChar?ch);???????????????????????????//?由?QChar?對象?ch構(gòu)造
QString(const?QChar?*pch,?int?size);????//?由?QChar?數(shù)組pch構(gòu)造,size?是數(shù)組大小
QString(const?QString?&obj);??????????????//?拷貝構(gòu)造函數(shù)
QString(const?char?*str);??????????????????//??由字符串?str?構(gòu)造,str是一個普通字符串



由于存在這些構(gòu)造函數(shù),凡是可以用 QString 類作為參數(shù)的地方,都可以安全地使用 QChar 對象或普通的字符串。



判斷?

可以用下面的成員函數(shù)判斷 QString 對象是否為空字符串:



bool?isEmpty()?const;????//?判斷是否為空字符串



轉(zhuǎn)換

QString 類提供了很多函數(shù)用于將字符串轉(zhuǎn)換為數(shù)值,如:



double?toDouble(bool?*ok?=?0)?const;?????????????????????????????????????//?轉(zhuǎn)換為高精度浮點數(shù)
float?toFloat(bool?*ok?=?0)?cosnt;??????????????????????????????????????????//?轉(zhuǎn)換為浮點數(shù)
int?toInt(bool?*ok,?int?base?=?10)?const;?????????????????????????????????//?轉(zhuǎn)換為整型數(shù)
long?toLong(bool?*ok,?int?base?=?10)?cosnt;????????????????????????????//?轉(zhuǎn)換為長整型
short?toShort(bool?*ok,?int?base?=?10)?const;??????????????????????????//?轉(zhuǎn)換為短整型
uint?toUInt(bool?*ok?=?0;?int?base?=?10)?const?????????????????????????//?轉(zhuǎn)換為無符號整型數(shù)
ulong?toLong(bool?*ok?=?0,?int?base?=?10)?const;?????????????????????//?轉(zhuǎn)換為無符號長整型數(shù)?
ushort?toUShort(bool?*ok?=?0,?int?base?=?10)?const;?????????????????//?轉(zhuǎn)換為無符號短整型數(shù)



這些函數(shù)能夠解析 QString 對象的內(nèi)容,將其轉(zhuǎn)換為相應(yīng)的數(shù)值。其中 ok 參數(shù)指向一個 bool 型變量, 這個參數(shù)用于輸出轉(zhuǎn)換是否成功的信息。base參數(shù)則是轉(zhuǎn)換為整數(shù)類型時的基。這些函數(shù)都不會改變 QString 對象自身。?



注意: 當(dāng)字符串以 0x開頭時,轉(zhuǎn)換的基自動轉(zhuǎn)換為16, 當(dāng)字符串以0開頭時,轉(zhuǎn)換的基自動為8。


下面這些成員函數(shù)可以將一個數(shù)值轉(zhuǎn)換為字符串并設(shè)為 QString 對象的值:



QString?&setNum(int?n,?int?base?=?10);???????????????????????????????????????????//?整型數(shù)
QString?&setNum(uint?n,?int?base?=?10);?????????????????????????????????????????//?無符號整型數(shù)
QString?&setNum(long?n,?int?base?=?10);????????????????????????????????????????//?長整型
QString?&setNum(ulong?n,?int?base?=?10);???????????????????????????????????????//?無符號長整型數(shù)
QString?&setNum(short?n,?int?base?=?10);???????????????????????????????????????//?短整型數(shù)
QString?&setNum(ushort?n,?int?base?=?10);??????????????????????????????????????//?無符號短整型數(shù)
QString?&setNum(double?n,?char?format?=?'g',?int?precision?=?6);??????????//?高精度浮點數(shù)
QString?&setNum(float?n,?char?format?=?'g',?int?precision?=?6);????????????//?浮點數(shù)


? ? ? ?將浮點數(shù)轉(zhuǎn)換為字符串時,format 參數(shù)指定轉(zhuǎn)化格式,precision 參數(shù)指定轉(zhuǎn)換結(jié)果的精度,既有效數(shù)組的個數(shù)。注意這些函數(shù)會改變 QString 對象本身的值,而以下的函數(shù)則采用了不同的做法,它們返回一個新的臨時對象以供使用:




QString?number(int?n,?int?base?=?10);
QString?number(uint?n,?int?base?=?10);
QString?number(long?n,?int?base?=?10);
QString?number(ulong?n?,int?base?=?10);
QString?number(double?n,?char?format?=?'q',?int?precision?=?6);



這些函數(shù)都是靜態(tài)成員函數(shù),因而與某個具體的對象無關(guān),可以直接通過類名調(diào)用。



QString 類也提供了大小寫轉(zhuǎn)換的函數(shù),如:



QString?toLower()?const;????//?轉(zhuǎn)換為小寫
QString?toUpper()?const;????//?轉(zhuǎn)換為大寫



這些函數(shù)都不會改變 QString 對象本身,而是將轉(zhuǎn)換后的結(jié)果作為返回值。



比較

QString 類提供了一個函數(shù)用于兩個 QString 對象的比較:



int?compare(const?QString?&s1,?const?QString?&s2,?Qt::CaseSensitivity?cs?=?Qt::CaseSensitive);


這是一個靜態(tài)成員函數(shù),它可以比較 s1 和 s2 的大小,參數(shù) cs 有以下兩個取值。




Qt::CaseInsensitive:?表示對大小寫不敏感
Qt::Casesensitive?:????表示對大小寫敏感



返回值的含義如下:大于 0 表示 s1 大于 s2,等于 0 表示 s1 等于 s2, 小于 0 表示 s1 小于 s2。


為了方便使用,QString 類還提供了以下重載函數(shù)用于比較:



int?compare(const?QString?&other,?Qt::CaseSensitivity?cs?=?Qt::CaseSensitive)?const;



這個函數(shù)用于比較 QString 對象自身和 QString 對象 other。


實際上更為直觀的是使用 QString 類的比較操作符,如



bool?operator?<?(StringType?other)?const;????????//?比較是否小于?other人
bool?operator??(StringType?other)?constt;???????//?比較是否大于?other
bool?operator?>=?(StringType?other)?const;??????//?比較是否大于等于?other
bool?operator?!=?(StringType?other)?const;???????//?比較是否不等于?other


? ? ? 這里的 StringType 指的是 (const QString &)或 (const char *),哥也就是說,這些操作副既可以與 QString 對象比較,也可以與普通的字符串比較。它們的局限性是第一個操作數(shù)必須是 QString 對象,因此,Qt 中又定義了以下操作符:




bool?operator?<?(const?char?*s1,?const?QString?&s2);?????????????????//?比較?s1?是否小于?s2
bool?operator??(const?char?*s1,?const?QString?&s2);?????????????????//?比較?s1?是否大于?s2
bool?operator?>=?(const?char?*s1,?const?QString?&s2);???????????????//?比較?s1?是否大于等于?s2
bool?operator?!=?(const?char?*s1,?const?QString?&s2);????????????????//?比較?s1?是否不等于?s2



這些操作符不是 QString 類的成員,它們的第一個參數(shù)是普通字符串。


? ? ? ??

?查找
?用以下的成員函數(shù)可以判斷 QString 對象是否包含指定的字符串或字符:



bool?contains(const?QString?&str,?Qt::CaseSensitivity?cs?=?Qt::CaseSensitive)?const;??????
bool?contains(cosnt?ch,?Qt::CaseSensitivity?cs?=?Qt::CaseSensitive)?const;


用以下的成員函數(shù)可以得到 QString 對象包含某個特定字符串或字符的個數(shù):




int?count(const?QString?&str,?Qt::CaseSensitivity?cs?=?Qt::CaseSensitive)?const;
int?count(QChar?ch,?Qt::CaseSensitivity?cs?=?Qt::CaseSensitive)?const;



?用以下的成員函數(shù)可以得到 QString 對象中某個特定字符串或字符出現(xiàn)的位置:



int?indexOf(const?QString?&str,?int?from?=?0,?Qt::CaseSensitivity?cs?=?Qt::CaseSensitive)?const;
int?indexOf(QChar?ch,?int?from?=?0,?Qt::CaseSensitivity?cs?=?Qt::CaseSensitive)?const;


? ? ? ? 這里參數(shù) from 是查找的起點,它可以為負(fù)數(shù),-i 表示倒數(shù)第i個字符。查找的方向是從前往后。返回值是查找到的字符串或字符的位置,如果沒有找到則返回 -1。



? ? ? ? QString 類中還有與此功能相似的函數(shù)用于從后往前查找字符串或字符:


int?lastIndexOf(const?QString?&str,?int?from?=?-1,?Qt::CaseSensitivity?cs?=?Qt::CaseSensitive)?const;
int?lastIndexOf(QChar?ch,?int?from?=?-1,?Qt::CaseSensitivity?cs?=?Qt::CaseSensitive)?const


?? ? 字符串處理

? ? ? ? QString ?類支持用賦值操作符進(jìn)行對象的復(fù)制,其賦值操作符的聲明如下:


QString?&operator?=?(const?QString?&other);????????//?復(fù)制另外一個?QString?對象
QString?&operator?=?(const?char?*str);???????????????//?復(fù)制普通字符串
QString?&operator?=?(char?ch);?????????????????????????//?復(fù)制字符
QString?&operator?=?(QChar?ch);???????????????????????//?復(fù)制?QChar?類對象


以下的成員函數(shù)可以將另一個字符串或字符接在 QString 對象后面,形成一個整體的字符串:



QString?&append(const?QString?&str);????????????????//?接續(xù)?QString?對象
QString?&append(const?char?*str);????????????????????//?接續(xù)普通字符串
QString?&append(QChar?ch);????????????????????????????//?接續(xù)?QChar?對象



它們的返回值是 QString 對象自己的引用,也就是說,可以用在這個返回值再次調(diào)用成員函數(shù),形成連續(xù)的字符串接續(xù)操作。

?為了讓代碼更直觀, QString 類中還定義了一個操作符用于字符串的接續(xù)



QString?&operator?+=?(const?QString?&other);?????//?續(xù)接?QString?對象
QString?&operator?+=?(const?char?*str);????//?續(xù)接普通字符串
QString?&operator?+=?(char?ch);????//?接續(xù)字符型數(shù)據(jù)
QString?&operator?+=?(QChar?ch);???//?接續(xù)?QChar?對象


?它們的功能與 append 相同。由于 C++ 語言允許賦值操作符和復(fù)合賦值操作符的返回值作為左值使用,因此它們的返回值也被設(shè)計為 QString 對象自己的引用,故也可以連續(xù)操作。但由于復(fù)合賦值操作符的結(jié)合順序是從右往左,要想先計算左邊的操作數(shù)需要加括號。
? ? ? ??



? ? ? ?與 append 函數(shù)功能類似,以下的成員函數(shù)也能夠?qū)⒘硪粋€字符串或字符與 QString 對象連接起來,但是接在原字符串的前面:



QString?&prepend(const?QString?&str);??????????//?在前面接續(xù)?QString?對象
QString?&prepend(const?char?*str);??????????????//?在前面接續(xù)普通字符串
QString?&prepend(QChar?ch);??????????????????????//?在前面接續(xù)?QChar?對象


功能更一般化的是在 QString 對象的任意位置插入另一個字符串或字符,如:




QString?&insert(int?position,?const?QString?&str);???????????????????//?插入字符串
QString?&insert(int?position,?const?QChar?*pch,?int?size);?????????//?插入?QChar?數(shù)組
QString?&insert(int?position,?QChar?ch);???????????????????????????????//?插入?QChar?對象


?這里 position 參數(shù)是要插入的位置,返回值也是對 QString 對象自己的引用。?



? ? ? ?與插入相反的操作是移除 QString 對象中的一部分,如:



QString?&remove(int?position,?int?n);


這個函數(shù)可以移除 QString 對象中從位置 position 開始的 n 個字符,


下面兩個成員函數(shù)則可以從 QString 對象中移除指定的字符串或字符:



QString?&remove(QChar?ch,?Qt::CaseSensitivity?cs?=?Qt::CaseSensitive);
QString?&remove(const?QString?&str,?Qt::CaseSensitivity?cs?=?Qt::CaseSensitive);


?以下是 QString 對象的替換操作:




QString?&replace(int?position,?int?n,?const?QString?&after);????????????????????//?QString?對象
QString?&replace(int?position,?int?n,?const?QChar?*pch,?int?size);????????????//?QChar?數(shù)組
QString?&replace(int?opsition,?int?n,?QChar?after);????????????????????????????????//?QChar?對象



這三個函數(shù)的功能是將 QString 對象從 position 開始的 n 個字符替換為新內(nèi)容,新內(nèi)容分別由 QString 對象、QChar 數(shù)組 和 QChar 對象表示。

?以下成員函數(shù)則可以搜索指定的字符串或字符并開始替換:



QString?&replace(const?QString?&before,?const?QString?&after,?Qt::CaseSensitivity?cs?=?Qt::CaseSensitive);??????//?QString?替換為?QString
QString?&replace(QChar?ch,?cosnt?QString?&after,?Qt::CaseSensitivity?cs?=?Qt::CaseSensitive);???????????????????????//?QChar?替換為?QString
QString?&replace(QChar?before,?QChar?after,?Qt::CaseSensitivity?cs?=?Qt::CaseSensitive);??????????????????????????????//?Qchar?替換為?QChar


下面這個成員函數(shù)可以清空一個 QString 對象的內(nèi)容,使之成為空字符串。



void?clear();


?而下面這個成員函數(shù)可以截斷 QStrring 對象,也就是去掉指定位置后的所有內(nèi)容:



void?truncate(int?position);??????//?從位置?position?截斷,位置從0開始編號


下面這個成員函數(shù)可以截掉 QString 對象最后的若干個字符:



void?chop(int?n);?????//?截掉最后的?n個字符


以下幾個成員函數(shù)可以得到 QString 對象的子字符串:



QString?left(int?n)?const;??????//?得到左邊?n?個字符構(gòu)成的子字符串
QString?right(int?n)?const;????//?得到右邊?n?個字符構(gòu)成的子字符串
QString?mid(int?position,?int?n?=?-1)?const;??//?從中間得到子字符串


從中間得到子字符串時,參數(shù) position 是子字符串的起始位置,參數(shù) n 是字符串的個數(shù),如果n 為 -1,則表示一直到原字符串的結(jié)尾。


注意上述三個函數(shù)并不修改 QString 對象自身,而是返回一個臨時對象以供使用。

下面這個成員函數(shù)可以截去 QString 對象中頭部和尾部的空白字符:



QString?trimmed()?const;


?? ? ? 空白字符包括空格、回車、換行、制表符等字符。下面這個成員函數(shù)不僅能去掉 QString 對象頭尾的空白字符,還能將中間的連續(xù)多個空白字符全部替換成一個空格:



QString?simlified()?const;


加法操作符可以將兩個字符串或字符連接起來并以 QString 臨時對象的方式返回:



const?QString?operator+(const?QString?&s1,?const?QString?&s2);???????
const?QString?operator+(const?QString?&s1,?const?char?*s2);
const?QString?operator+(const?char?s1,?const?QString?&s2);
const?QString?operator+(const?QString?&s,?char?ch);


注意加法操作符的兩個操作數(shù)中必須至少有一個是 QString 對象,否則無法重載操作符。顯然,加法操作副都不是 QString 類的成員。 ? ??

? ? ? ??

?索引

QString 類也像普通的字符串一樣可以根據(jù)下標(biāo)得到某個位置上的字符:



const?QChar?at(int?position)?const;


這是一個成員函數(shù),更直觀的方法是用以下的操作符:



const?QChar?operator[]?(int?position)?const;
const?QChar?operator[]?(uint?position)?const;


? ? ? ? ?這樣對 QString 對象的取字符操作就類似于對一個字符數(shù)組的操作。事實上,通過【】操作符得到的字符還可以被修改,要用到另外兩個重載的【】操作符:



QCharRef?operator[]?(int?position);
QCharRef?operator[]?(uint?position);


返回的 QCharRef 類是一個輔助類,對它的修改將反映到原字符串中去。


統(tǒng)計

?以下兩個成員函數(shù)都可以得到 QString 對象中字符的個數(shù)



int?size()?const;
int?length()?const;


注意字符的個數(shù)并不一定等于字節(jié)數(shù)。













本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉