最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Qt開(kāi)發(fā)之QString類的使用教程詳解

 更新時(shí)間:2022年11月28日 09:13:12   作者:音視頻開(kāi)發(fā)老舅  
本文主要介紹了Qt中QString類的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

介紹

采用Unicode編碼

采用隱式共享技術(shù),節(jié)省內(nèi)存和不必要的數(shù)據(jù)拷貝

隱式共享介于淺拷貝和深拷貝之間,當(dāng)兩個(gè)string對(duì)象賦值時(shí),會(huì)實(shí)現(xiàn)淺拷貝(共享一塊內(nèi)存),如果某個(gè)對(duì)象被修改了,則會(huì)實(shí)現(xiàn)深拷貝(從新開(kāi)辟內(nèi)存)

跨平臺(tái)使用,不需要考慮不同平臺(tái)的兼容性

QString直接支持字符串與數(shù)字的相互轉(zhuǎn)換

QString直接支持字符串大小比較

QString直接支持不同字符編碼間的相互轉(zhuǎn)換

QString直接支持std::string和std::wstring的相互轉(zhuǎn)換

QString直接支持正則表達(dá)式的應(yīng)用

QString常用函數(shù)

static const QChar data[4] = { 0x0055, 0x006e, 0x10e3, 0x03a3 };
QString str(data, 4);    //通過(guò)QChar寬字符初始化
 
str = "hello";     //直接賦值
 
str.length();    //獲取字符串長(zhǎng)度
 
str.size();     //獲取字符串?dāng)?shù)量,等價(jià)于length()
 
str.capacity();   //獲取容量,容量包含了當(dāng)前string里不必增加內(nèi)存就能使用的字符數(shù)
 
str.isEmpty();      //如果str為空或?yàn)? ,則返回true,否則返回false
 
str.isNull();    //如果為0,則返回true,否則返回false
 
str.clear();    //清空str
 
str. resize(8);    //設(shè)置str的字符串長(zhǎng)度
 
str.fill('m');     //將str字符串,全部字符填為'm'
 
str.fill('m',5);    //填充5個(gè)字符'm',并修改str的字符串長(zhǎng)度為5
 
       
str.append("ABC");   //在str字符串末尾附加"ABC"子串
 
str.prepend("abc");    //在str字符串頭部添加"abc"子串
 
str. chop(2);    //從str字符串末尾, 去掉2個(gè)字符
 
str = "Montreal";
 
str.remove(1, 4);    //從str下標(biāo)1位置開(kāi)始,清除4個(gè)字符, s = "Meal"
 
str.setNum(1234.5);    //數(shù)字轉(zhuǎn)字符串 str = "1234.5"
 
double val = str.toDouble();   //字符串轉(zhuǎn)double  val =1234.5
 
 
/*arg()成員函數(shù):通過(guò)string串里通過(guò)“%數(shù)字”表示argument(參數(shù)) */
str = QString("%1,%2,%3,%4,%5,%6")
    .arg("A","B","C")
    .arg("D","E","D");     //字符串參數(shù)替換 str1 = "A,B,C,D,E,D"
 
str = QString("%1,%2")
         .arg(40)   
         .arg(40,0,16);        //將40以16進(jìn)制轉(zhuǎn)換為字符串,如果想使用大寫(xiě)的話,通過(guò)toUpper()函數(shù)來(lái)實(shí)現(xiàn)
                               //還可以這樣寫(xiě)QString("%1").arg(cnt,5,10,QChar('0');  //輸出00050,表示保留5位有效數(shù)字,
 
floatcnt2=50.12345;
  qDebug()<<QString::asprintf("%.2f",cnt2);  //打印50.12
str.sprintf("%d %s",1,"first");    //通過(guò)一定參數(shù)輸出到字符串里, str= "1 first"
 
str="abcdef";
 
str.indexOf ("bc");      //return 1
 
str.indexOf ("bc",1);     //從str下標(biāo)1的位置查找,return 1
 
str.indexOf ("bc",2);       //沒(méi)找到,則return -1
 
 
str. lastIndexOf("bc");    //反向查找,從str末尾向前查找,return 1
 
str. lastIndexOf("bc",5);    //反向查找,從str下標(biāo)5的位置向前查找,return 1
 
str.lastIndexOf("bc",-2);    //反向查找,從str末尾-1的位置向前查找
 
str.insert( 2, "AB ");     //在str字符串下標(biāo)2的位置插入"AB "子串
 
str="abcdefgh";
 
str2 = str.mid(3);    //提取子串,提取出str的下標(biāo)為3到末尾,給str2
                      
str2 = str.mid(3,4); //從str的下標(biāo)為3開(kāi)始,提取4個(gè)字符給str2
 
str = "th!ea minimum";
str.indexOf(QRegExp("[m i!]"), 0);       // 使用正則表達(dá)式匹配查找,遇到m, ,i,! 時(shí)停止 ,所以return 2
 
long a = 63;
QString s = QString::number(a, 16);             // s == "3f"
 
QString t = QString::number(a, 16).toUpper();     // t == "3F"
QString str = "Bananas";
str.startsWith("Ban"); //判斷str的開(kāi)頭是否以"Ban"開(kāi)頭,returns true
str.startsWith("Car"); // returns false

常用四則運(yùn)算符

QString str="*+-";
str.indexOf(QRegExp("[+-]"));    //匹配一次+或-,所以return 1
 
str="*asd12345682";
str.indexOf(QRegExp("23"));      //匹配23成功,return 5
 
str="*abcsd8de";
str.indexOf(QRegExp("[0-9]"));      //匹配一次0~9數(shù)字,所以return 6 

示例-通過(guò)四則運(yùn)算匹配一個(gè)范圍的數(shù)字

比如:

12.5-19.5Kg :提取出12.5 和19.5

125.68m~376.78m :提取出125.68和376.78

999.99美元 :提取出999.99

代碼如下:

    QString text = ui->stringText->text();
    QString number1,number2;
 
    int begin1=text.indexOf(QRegExp("[0-9]"));
    text.remove(0,begin1);
    int begin2=text.indexOf(QRegExp("[^0-9.]"));  //找非0~9,小數(shù)點(diǎn)以外的字符位置
    if(begin1==-1)
    {
        qDebug()<<"err";
        return ;
    }
 
    if(begin2!=-1)          //比如 123XYZ
       number1 = text.left(begin2);
    else        //只有一個(gè)數(shù)字
    {
         number1 = text;
         qDebug()<<"range:"<<number1.toFloat();
         return ;
    }
 
    text.remove(0,begin2);
    begin1=text.indexOf(QRegExp("[0-9]"));
    text.remove(0,begin1);
    begin2=text.indexOf(QRegExp("[^0-9.]"));        //找非0~9,小數(shù)點(diǎn)以外的字符位置
    if(begin1==-1)  //只有一個(gè)數(shù)字
    {
        qDebug()<<"range:"<<number1.toFloat();
        return ;
    }
 
    if(begin2!=-1)          //比如 123XYZ
        number2 = text.left(begin2);
    else
        number2 = text;
 
    qDebug()<<"range:"<<number1.toFloat()<<"~"<<number2.toFloat();

打印如下:

其它使用:

QByteArray QString::toLocal8Bit () ;
    //獲取字節(jié)數(shù)組對(duì)象
char * QByteArray::data ();        //通過(guò)字節(jié)數(shù)組對(duì)象的成員data函數(shù),獲取char數(shù)組
QString("%1").arg(cnt,5,10,QChar('0')

以上就是Qt開(kāi)發(fā)之QString類的使用教程詳解的詳細(xì)內(nèi)容,更多關(guān)于Qt QString類的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C語(yǔ)言實(shí)現(xiàn)旅游景點(diǎn)咨詢系統(tǒng)

    C語(yǔ)言實(shí)現(xiàn)旅游景點(diǎn)咨詢系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)旅游景點(diǎn)咨詢系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • C++實(shí)現(xiàn)屏幕截圖功能

    C++實(shí)現(xiàn)屏幕截圖功能

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)屏幕截圖功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • C語(yǔ)言簡(jiǎn)單實(shí)現(xiàn)門禁系統(tǒng)

    C語(yǔ)言簡(jiǎn)單實(shí)現(xiàn)門禁系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言簡(jiǎn)單實(shí)現(xiàn)門禁系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 深入淺出理解C語(yǔ)言指針的綜合應(yīng)用

    深入淺出理解C語(yǔ)言指針的綜合應(yīng)用

    指針是指向另一個(gè)變量的變量。意思是一個(gè)指針保存的是另一個(gè)變量的內(nèi)存地址。換句話說(shuō),指針保存的并不是普通意義上的數(shù)值,而是另一個(gè)變量的地址值。一個(gè)指針保存了另一個(gè)變量的地址值,就說(shuō)這個(gè)指針“指向”了那個(gè)變量
    2022-02-02
  • C++實(shí)現(xiàn)寵物商店信息管理系統(tǒng)

    C++實(shí)現(xiàn)寵物商店信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)寵物商店信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • VC++操作SQLite簡(jiǎn)單實(shí)例

    VC++操作SQLite簡(jiǎn)單實(shí)例

    這篇文章主要介紹了VC++操作SQLite,很實(shí)用的功能,需要的朋友可以參考下
    2014-07-07
  • libevent庫(kù)的使用--定時(shí)器的使用實(shí)例

    libevent庫(kù)的使用--定時(shí)器的使用實(shí)例

    這篇文章主要介紹了libevent庫(kù)的使用--定時(shí)器的使用實(shí)例,有需要的朋友可以參考一下
    2013-12-12
  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之動(dòng)態(tài)分配實(shí)現(xiàn)串

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之動(dòng)態(tài)分配實(shí)現(xiàn)串

    這篇文章主要介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之動(dòng)態(tài)分配實(shí)現(xiàn)串的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)中動(dòng)態(tài)分配實(shí)現(xiàn)串的實(shí)例,需要的朋友可以參考下
    2017-10-10
  • C++ 如何實(shí)現(xiàn)多線程與線程同步

    C++ 如何實(shí)現(xiàn)多線程與線程同步

    多線程中的線程同步可以使用,CreateThread,CreateMutex 互斥鎖實(shí)現(xiàn)線程同步,通過(guò)臨界區(qū)實(shí)現(xiàn)線程同步,Semaphore 基于信號(hào)實(shí)現(xiàn)線程同步,CreateEvent 事件對(duì)象的同步,以及線程函數(shù)傳遞單一參數(shù)與多個(gè)參數(shù)的實(shí)現(xiàn)方式。
    2021-06-06
  • C++數(shù)據(jù)結(jié)構(gòu)紅黑樹(shù)全面分析

    C++數(shù)據(jù)結(jié)構(gòu)紅黑樹(shù)全面分析

    今天的這一篇博客,我要跟大家介紹二叉搜索樹(shù)中的另一顆樹(shù)——紅黑樹(shù),它主要是通過(guò)控制顏色來(lái)控制自身的平衡,但它的平衡沒(méi)有AVL樹(shù)的平衡那么嚴(yán)格
    2022-02-02

最新評(píng)論

淮安市| 江口县| 武夷山市| 昆明市| 东城区| 巩义市| 疏勒县| 平顶山市| 新邵县| 常德市| 增城市| 怀远县| 蕉岭县| 长子县| 曲水县| 漳浦县| 泾川县| 丰都县| 红桥区| 县级市| 西吉县| 汝州市| 尼勒克县| 犍为县| 特克斯县| 常熟市| 呼图壁县| 北安市| 漳平市| 巫山县| 那曲县| 新营市| 内丘县| 抚顺市| 长治市| 浮山县| 栾城县| 五原县| 土默特右旗| 全南县| 高邮市|