日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

QT学习笔记(十一):QString类

發布時間:2024/7/23 c/c++ 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QT学习笔记(十一):QString类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

QT學習筆記(十一):QString類

    • 1、概述
    • 2、編輯操作
    • 3、查詢操作
    • 3、轉換操作

1、概述

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

1)字符串采用 Unicode 內部編碼,可以表示世界上大多數語言的文字;
2)字符串的存儲有引用計數,當一個 QString 對象被復制為另一個 QString 對象時,它們實際上指向相同的存儲空間,僅僅是增加一個引用計數;
3)隱式共享:在后臺,QString使用隱式共享來減少內容使用和避免不必要的復制,這也有助于減少儲存16為字符的固有開銷,只有當函數向它寫入時才會復制該數據或者當指向相同存儲空間的多個 QString 對象中的一個要被修改時,才將真正復制一個新的字符串并進行修改。
1.2 構造函數

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

參考博客:QT之QString,
官方說明:QString Class

2、編輯操作


編輯操作QT控制臺程序 示例:

#include <QCoreApplication> #include <QDebug> #include <QStringList>int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);qDebug() << QObject::tr("以下是編輯字符串操作:") << endl;QString str = "hello";// 執行下面一行代碼,大小為5qDebug() << QObject::tr("字符串大小:") << str.size(); str[0] = QChar('H'); // 將第一個字符換為‘H'// 執行下面一行代碼,結果為‘H'qDebug() << QObject::tr("第一個字符:") << str[0]; str.append(" Qt"); // 向字符串后添加"Qt"str.replace(1,4,"i"); // 將第1個字符開始的后面4個字符替換為字符串"i"str.insert(2," my"); // 在第2個字符后插入" my"// 執行下面一行代碼,結果為Hi my QtqDebug() << QObject::tr("str為:") << str; str = str + "!!!"; // 將兩個字符串組合// 執行下面一行代碼,結果為Hi my Qt!!!qDebug() << QObject::tr("str為:") << str; str = " hi\r\n Qt!\n ";qDebug() << QObject::tr("str為:") << str;QString str1 = str.trimmed(); // 除去字符串兩端的空白字符qDebug() << QObject::tr("str1為:") << str1;QString str2 = str.simplified(); // 除去字符串兩端和中間多余的空白字符//結果為hi Qt!qDebug() << QObject::tr("str2為:") << str2; str = "hi,my,,Qt";// 從字符串中有","的地方將其分為多個子字符串,// QString::SkipEmptyParts表示跳過空的條目QStringList list = str.split(",",QString::SkipEmptyParts);// 執行下面一行代碼,結果為hi,my,QtqDebug() << QObject::tr("str拆分后為:") << list; str = list.join(" "); // 將各個子字符串組合為一個字符串,中間用" "隔開// 執行下面一行代碼,結果為hi my QtqDebug() << QObject::tr("list組合后為:") << str; qDebug() << QString().isNull(); // 結果為trueqDebug() << QString().isEmpty(); // 結果為trueqDebug() << QString("").isNull(); // 結果為falseqDebug() << QString("").isEmpty(); // 結果為truereturn a.exec(); }

運行結果:

3、查詢操作


查詢操作QT控制臺程序 示例:

#include <QCoreApplication> #include <QDebug> #include <QStringList>int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);qDebug() << endl << QObject::tr("以下是在字符串中進行查詢的操作:") <<endl;str = "yafeilinux";qDebug() << QObject::tr("字符串為:") << str;// 結果為linuxqDebug() << QObject::tr("包含右側5個字符的子字符串:") << str.right(5);// 結果為yafeiqDebug() << QObject::tr("包含左側5個字符的子字符串:") << str.left(5);// 結果為feiqDebug() << QObject::tr("包含第2個字符以后3個字符的子字符串:") << str.mid(2, 3);//結果為2qDebug() << QObject::tr("'fei'的位置:") << str.indexOf("fei"); //結果為yqDebug() << QObject::tr("str的第0個字符:") << str.at(0); //結果為2qDebug() << QObject::tr("str中'i'字符的個數:") << str.count('i'); // 結果為trueqDebug() << QObject::tr("str是否以”ya“開始?") << str.startsWith("ya");// 結果為trueqDebug() << QObject::tr("str是否以”linux“結尾?") << str.endsWith("linux");// 結果為trueqDebug() << QObject::tr("str是否包含”lin“字符串?") << str.contains("lin");QString temp = "hello";// 兩字符串進行比較,結果為yafeilinuxif(temp > str) qDebug() << temp; else qDebug() << str;qDebug() << endl << QObject::tr("以下是字符串的轉換操作:") << endl;str = "100";// 結果為100qDebug() << QObject::tr("字符串轉換為整數:") << str.toInt(); int num = 45;//結果為"45"qDebug() << QObject::tr("整數轉換為字符串:") << QString::number(num);str = "FF";bool ok;int hex = str.toInt(&ok, 16);// 結果為ok:true 255qDebug() << "ok: "<< ok << QObject::tr("轉換為十六進制:") << hex;num = 26;//結果為1aqDebug() << QObject::tr("使用十六進制將整數轉換為字符串:")<< QString::number(num, 16);str = "123.456";//結果為123.456qDebug() << QObject::tr("字符串轉換為浮點型:") << str.toFloat();str = "abc";// 結果為ABCqDebug() << QObject::tr("轉換為大寫:") << str.toUpper();str = "ABC";// 結果為abcqDebug() << QObject::tr("轉換為小寫:") <<str.toLower();int age = 25;QString name = "yafei";// name代替%1,age代替%2str = QString("name is %1, age is %2").arg(name).arg(age);// 結果為name is yafei, age is 25qDebug() << QObject::tr("更改后的str為:") << str;str = "%1 %2";// 結果為%1f helloqDebug() << str.arg("%1f","hello"); // 結果為hellof %2 qDebug() << str.arg("%1f").arg("hello"); str = QString("ni%1").arg("hi",5,'*');//結果為ni***hiqDebug() << QObject::tr("設置字段寬度為5,使用'*'填充:") << str;qreal value = 123.456;str = QString("number: %1").arg(value,0,'f',2);//結果為"number:123.45qDebug() << QObject::tr("設置小數點位數為兩位:") << str; // 執行下面一行代碼,結果為number:123.45不會顯示引號qDebug() << QObject::tr("將str轉換為const char* :") << qPrintable(str);return a.exec(); }

運行結果:

3、轉換操作

關于QString::arg()函數詳解請參見: QT學習筆記(六):QString::arg()函數用法小結.

轉換操作QT控制臺程序 示例:

#include <QCoreApplication> #include <QDebug> #include <QStringList>int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);qDebug() << endl << QObject::tr("以下是字符串的轉換操作:") << endl;str = "100";// 結果為100qDebug() << QObject::tr("字符串轉換為整數:") << str.toInt(); int num = 45;//結果為"45"qDebug() << QObject::tr("整數轉換為字符串:") << QString::number(num);str = "FF";bool ok;int hex = str.toInt(&ok, 16);// 結果為ok:true 255qDebug() << "ok: "<< ok << QObject::tr("轉換為十六進制:") << hex;num = 26;//結果為1aqDebug() << QObject::tr("使用十六進制將整數轉換為字符串:")<< QString::number(num, 16);str = "123.456";//結果為123.456qDebug() << QObject::tr("字符串轉換為浮點型:") << str.toFloat();str = "abc";// 結果為ABCqDebug() << QObject::tr("轉換為大寫:") << str.toUpper();str = "ABC";// 結果為abcqDebug() << QObject::tr("轉換為小寫:") <<str.toLower();int age = 25;QString name = "yafei";// name代替%1,age代替%2str = QString("name is %1, age is %2").arg(name).arg(age);// 結果為name is yafei, age is 25qDebug() << QObject::tr("更改后的str為:") << str;str = "%1 %2";// 結果為%1f helloqDebug() << str.arg("%1f","hello"); // 結果為hellof %2 qDebug() << str.arg("%1f").arg("hello"); str = QString("ni%1").arg("hi",5,'*');//結果為ni***hiqDebug() << QObject::tr("設置字段寬度為5,使用'*'填充:") << str;qreal value = 123.456;str = QString("number: %1").arg(value,0,'f',2);//結果為"number:123.45qDebug() << QObject::tr("設置小數點位數為兩位:") << str; // 執行下面一行代碼,結果為number:123.45不會顯示引號qDebug() << QObject::tr("將str轉換為const char* :") << qPrintable(str);return a.exec(); }

運行結果:

總結

以上是生活随笔為你收集整理的QT学习笔记(十一):QString类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。