網站首頁 編程語言 正文
介紹
采用Unicode編碼
采用隱式共享技術,節省內存和不必要的數據拷貝
隱式共享介于淺拷貝和深拷貝之間,當兩個string對象賦值時,會實現淺拷貝(共享一塊內存),如果某個對象被修改了,則會實現深拷貝(從新開辟內存)
跨平臺使用,不需要考慮不同平臺的兼容性
QString直接支持字符串與數字的相互轉換
QString直接支持字符串大小比較
QString直接支持不同字符編碼間的相互轉換
QString直接支持std::string和std::wstring的相互轉換
QString直接支持正則表達式的應用
QString常用函數
static const QChar data[4] = { 0x0055, 0x006e, 0x10e3, 0x03a3 };
QString str(data, 4); //通過QChar寬字符初始化
str = "hello"; //直接賦值
str.length(); //獲取字符串長度
str.size(); //獲取字符串數量,等價于length()
str.capacity(); //獲取容量,容量包含了當前string里不必增加內存就能使用的字符數
str.isEmpty(); //如果str為空或為0 ,則返回true,否則返回false
str.isNull(); //如果為0,則返回true,否則返回false
str.clear(); //清空str
str. resize(8); //設置str的字符串長度
str.fill('m'); //將str字符串,全部字符填為'm'
str.fill('m',5); //填充5個字符'm',并修改str的字符串長度為5
str.append("ABC"); //在str字符串末尾附加"ABC"子串
str.prepend("abc"); //在str字符串頭部添加"abc"子串
str. chop(2); //從str字符串末尾, 去掉2個字符
str = "Montreal";
str.remove(1, 4); //從str下標1位置開始,清除4個字符, s = "Meal"
str.setNum(1234.5); //數字轉字符串 str = "1234.5"
double val = str.toDouble(); //字符串轉double val =1234.5
/*arg()成員函數:通過string串里通過“%數字”表示argument(參數) */
str = QString("%1,%2,%3,%4,%5,%6")
.arg("A","B","C")
.arg("D","E","D"); //字符串參數替換 str1 = "A,B,C,D,E,D"
str = QString("%1,%2")
.arg(40)
.arg(40,0,16); //將40以16進制轉換為字符串,如果想使用大寫的話,通過toUpper()函數來實現
//還可以這樣寫QString("%1").arg(cnt,5,10,QChar('0'); //輸出00050,表示保留5位有效數字,
floatcnt2=50.12345;
qDebug()<<QString::asprintf("%.2f",cnt2); //打印50.12
str.sprintf("%d %s",1,"first"); //通過一定參數輸出到字符串里, str= "1 first"
str="abcdef";
str.indexOf ("bc"); //return 1
str.indexOf ("bc",1); //從str下標1的位置查找,return 1
str.indexOf ("bc",2); //沒找到,則return -1
str. lastIndexOf("bc"); //反向查找,從str末尾向前查找,return 1
str. lastIndexOf("bc",5); //反向查找,從str下標5的位置向前查找,return 1
str.lastIndexOf("bc",-2); //反向查找,從str末尾-1的位置向前查找
str.insert( 2, "AB "); //在str字符串下標2的位置插入"AB "子串
str="abcdefgh";
str2 = str.mid(3); //提取子串,提取出str的下標為3到末尾,給str2
str2 = str.mid(3,4); //從str的下標為3開始,提取4個字符給str2
str = "th!ea minimum";
str.indexOf(QRegExp("[m i!]"), 0); // 使用正則表達式匹配查找,遇到m, ,i,! 時停止 ,所以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的開頭是否以"Ban"開頭,returns true
str.startsWith("Car"); // returns false
常用四則運算符
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數字,所以return 6
示例-通過四則運算匹配一個范圍的數字
比如:
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,小數點以外的字符位置
if(begin1==-1)
{
qDebug()<<"err";
return ;
}
if(begin2!=-1) //比如 123XYZ
number1 = text.left(begin2);
else //只有一個數字
{
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,小數點以外的字符位置
if(begin1==-1) //只有一個數字
{
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 () ;
//獲取字節數組對象
char * QByteArray::data (); //通過字節數組對象的成員data函數,獲取char數組
QString("%1").arg(cnt,5,10,QChar('0')
原文鏈接:https://blog.csdn.net/m0_60259116/article/details/128056363
相關推薦
- 2022-04-17 docker 執行python腳本 并查看日志
- 2022-12-13 Compose狀態保存rememberSaveable原理解析_Android
- 2022-06-18 python使用Random隨機生成列表的方法實例_python
- 2022-08-08 pandas?給dataframe添加列名的兩種方法_python
- 2022-12-23 Kotlin?select使用方法介紹_Android
- 2022-08-20 使用C#開發OPC?Server服務器源碼解析_C#教程
- 2023-04-06 python?numpy.linalg.norm函數的使用及說明_python
- 2022-07-29 Django?狀態保持搭配與存儲的實現_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支