Qt QString詳細用法

一.基礎用法

1.創建QString對象

QString str1 = "Hello, World!";
QString str2("This is a QString object.");
//一個是等號的重載,一個是拷貝構造,本質上是等價的

?2.獲取字符串長度?

int length = str1.length(); // 返回字符串的長度

3.拼接字符串?

QString combinedStr = str1 + " " + str2; // 使用+操作符拼接字符串

?4.字符串比較

if (str1 == str2) {// 字符串相等
} else {// 字符串不相等
}

5.字符串查找?

int index = str1.indexOf("World"); // 查找子字符串的位置

6.字符串替換

QString replacedStr = str1.replace("Hello", "Hi"); // 替換子字符串

7.字符串轉換

int num = 123;
QString numStr = QString::number(num); // 將整數轉換為字符串

8.字符串拆分

QStringList list = str2.split(" "); // 將字符串按空格拆分成字符串列表
foreach (const QString &str, list) {qDebug() << str;
}

9.字符串轉換為數字

QString numStr = "456";
int num = numStr.toInt(); // 將字符串轉換為整數

10.字符串轉換為字符數組?

QByteArray byteArray = str1.toUtf8(); // 將字符串轉換為UTF-8編碼的字節數組

11.字符串格式化

QString formattedStr = QString("The value is %1").arg(123); // 格式化字符串

二.使用QString需要注意的點

  1. 字符串的不可變性:QString是不可變的,即一旦創建了一個QString對象,就不能直接修改其內容。任何對QString對象的修改都會返回一個新的QString對象。

  2. 字符串的編碼:QString默認使用UTF-16編碼存儲字符串,但可以通過toUtf8()、toLatin1()等方法將字符串轉換為其他編碼。

  3. 字符串的拷貝:當對QString對象進行操作時,會涉及到字符串的拷貝。因為QString是不可變的,任何修改操作都會創建一個新的QString對象,而不是在原對象上直接修改。

  4. 字符串的性能:在處理大量字符串時,需要注意QString的性能。頻繁的字符串拼接、替換等操作可能會導致性能問題,可以考慮使用QByteArray或QTextStream等類來處理大量字符串。

  5. 字符串的比較:在比較字符串時,需要注意區分大小寫或忽略大小寫。可以使用QString的compare()方法來進行比較,并指定比較規則。

  6. 字符串的空值檢查:在使用QString時,需要注意對空值進行檢查,以避免空指針異常。可以使用isEmpty()方法來判斷字符串是否為空。

  7. 字符串的轉換:在將QString轉換為其他類型時,需要注意轉換的準確性。比如將QString轉換為整數時,需要確保字符串中只包含數字字符。

  8. 字符串的拆分:在拆分字符串時,需要考慮分隔符的處理。可以使用split()方法來按照指定的分隔符拆分字符串,并注意處理可能存在的空字符串。

三.案例練習?

需求:在文本框中輸入一段古詩詞,可以自動提取每段的第一個字符,并輸入到另一個文本框中。

如圖所示:

?

代碼如下:?

//先檢測是否有文本if(ui->text_name->toPlainText().isEmpty()){QMessageBox::information(this,"提示","文本為空,請輸入!");}else{//需求:將text里面的文本進行分割,并其每個字串的第一個字符組成一段話QString ret;QString ans=ui->text_name->toPlainText();//進行分割QStringList list=ans.split("\n");int count=list.count();for(int i=0;i<count;i++){ret+=list[i].at(0);}//將ret輸入回到lineEdit中ui->lineEdit->setText(ret);}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/13657.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13657.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13657.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

大模型落地競逐,云計算大廠“百舸爭流”

作者 | 辰紋 來源 | 洞見新研社 從ChatGPT到Sora&#xff0c;從圖文到視頻&#xff0c;從通用大模型到垂直大模型……經過了1年多時間的探索&#xff0c;大模型進入到以落地為先的第二階段。 行業的躁動與資本的狂熱相交匯&#xff0c;既造就了信仰派的腳踏實地&#xff0c;也…

7.從0做一個vue鍵盤組件

文章目錄 1. 從0做一個鍵盤組件1.1. 最終效果1.2. 分析1.3. 實現1.4. 如何引用 1. 從0做一個鍵盤組件 首先是why的問題&#xff1a;為什么需要做鍵盤組件&#xff1f; 我們目前可知的場景&#xff1a; 在新增賬單的時候&#xff0c;需要用到鍵盤在比如從賬單列表頁&#xff…

保護共享資源的方法(互斥鎖)

我最近開了幾個專欄&#xff0c;誠信互三&#xff01; > |||《算法專欄》&#xff1a;&#xff1a;刷題教程來自網站《代碼隨想錄》。||| > |||《C專欄》&#xff1a;&#xff1a;記錄我學習C的經歷&#xff0c;看完你一定會有收獲。||| > |||《Linux專欄》&#xff1…

MagicAnimate: Temporally Consistent Human Image Animation using Diffusion Model

show lab NUS&bytedancehttps://github.com/magic-research/magic-animate 問題引入 輸入參考圖片 I r e f I_{ref} Iref?和動作序列 p 1 : N [ p 1 , ? , p N ] p^{1:N}[p_1,\cdots,p_N] p1:N[p1?,?,pN?]&#xff0c;其中 N N N表示的是幀數&#xff0c;輸出的是 …

探索iOS中的KVC

目錄 前言 1.iOS中的KVC&#xff08;鍵值編碼&#xff09; 1. 什么是KVC&#xff1f; 2. 使用KVC 1.設置屬性值 2.獲取屬性值 3. KVC的高級用法 1.訪問私有屬性 2.訪問集合屬性 4. KVC的安全性 5. KVC原理 1. 查找順序 2. 設置值 6.參考文章 前言 這篇文章主要是…

UbuntuLinux系統下安裝wrk和使用

前言 wrk是一個用c語言寫的壓力測試工具&#xff0c;非常有用&#xff0c;但是ubuntu的軟件倉庫沒有收錄wrk&#xff0c;需要我們自己進行編譯和安裝&#xff0c;最近在學習一些性能測試、性能優化方面的知識&#xff0c;需要使用到這個強有力的工具&#xff0c;故此記錄安裝和…

Windows安全應急--在應急響應中需要知道的信息

在網絡安全事件發生后&#xff0c;一般是要去客戶現場排查問題的&#xff0c; 那么要想解決問題&#xff0c;信息的完整性決定了這次任務的成敗。。 1. 你需要知道的&#xff1a; 先讓客戶梳理一遍事情的起因經過結果 詢問客戶需要解決的問題 了解客戶的網絡環境&#xff08…

【ARM 嵌入式 C 入門及漸進 6.2 -- ARMv8 C 內嵌匯編讀系統寄存器的函數實現】

請閱讀【嵌入式開發學習必備專欄】 文章目錄 ARMv8 C 內嵌匯編讀系統寄存器 ARMv8 C 內嵌匯編讀系統寄存器 要在ARMv8架構中通過C代碼和內嵌匯編來讀取系統寄存器s3_0_c15_c5_5的值&#xff0c;并將其返回&#xff0c;可以按照以下方式實現system_read_reg函數&#xff1a; #…

buuctf的RSA(二)

1.RSA 知道 flag.enc 和 pub.key&#xff0c;典型的加密、解密 將pub,key 改為pub.txt 打開后發現公鑰 在RSA公私鑰分解 Exponent、Modulus&#xff0c;Rsa公私鑰指數、系數(模數)分解--查錯網 進行解密 得到e65537 n8693448229604811919066606200349480058890565…

innerText和innerHTML的區別

innerHTML和innerText都是元素的屬性&#xff0c;通過修改這個元素的屬性可以達到修改元素內容的目的。但是二者之間略有不同。具體來說&#xff0c;它們的區別如下&#xff1a; innerHTML可以獲取或設置元素內部的HTML內容&#xff0c;包括HTML標簽&#xff0c;而innerText則…

LeetCode 79.單詞搜索

原題鏈接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 給定一個 m x n 二維字符網格 board 和一個字符串單詞 word 。如果 word 存在于網格中&#xff0c;返回 true &#xff1b;否則&#xff0c;返回 false 。 單詞必須按照字母順序&#xff0c;通過相鄰的單元格內…

若依前后端分離版本-前后端交互整理

ruoyi-ui與后端交互 方法一&#xff1a;表單 使用 headers: {Content-Type:application/x-www-form-urlencoded}, ruoyi-ui的vue中 //ruoyi-ui的vue中定義 formData: {a: 111,b: 111,c: 1,}, //vue中方法調用 outBound() { empty(this.formData).…

6款網頁表白代碼6(附帶源碼)

6款網頁表白代碼6 前言效果圖及部分源碼1.愛心倒計時2.一起看星星3.愛心4.愛心&#xff08;有鼠標移動特效&#xff09;5.愛心&#xff08;高級效果&#xff09;6.愛心&#xff08;3D效果&#xff09; 領取源碼下期更新預報 前言 大部分人都有喜歡的人&#xff0c;學會這些表白…

藍橋杯物聯網競賽_STM32L071KBU6_關于sizo of函數產生的BUG

首先現象是我在用LORA發送信息的時候&#xff0c;左邊顯示長度是8而右邊接收到的數據長度卻是4 我以為是OLED顯示屏壞了&#xff0c;又或者是我想搞創新用了const char* 類型強制轉換數據的原因&#xff0c;結果發現都不是 void Function_SendMsg( unsigned char* data){unsi…

微軟Edge

微軟Edge瀏覽器概述 功能介紹 微軟Edge是一款基于Chromium開源項目的網頁瀏覽器&#xff0c;旨在提供更快的網頁加載速度、更高的安全性和更好的用戶體驗。它支持多種操作系統&#xff0c;包括Windows、macOS、Android和iOS&#xff0c;能夠滿足不同用戶的需求。Edge瀏覽器擁…

趕緊收藏!2024 年最常見 20道 Redis面試題(三)

上一篇地址&#xff1a;趕緊收藏&#xff01;2024 年最常見 20道 Redis面試題&#xff08;二&#xff09;-CSDN博客 五、Redis的持久化機制是什么&#xff1f; Redis 是一個高性能的鍵值存儲系統&#xff0c;支持多種類型的數據結構&#xff0c;如字符串、哈希、列表、集合、…

python數據類型之字符串

目錄 1.字符串概念和注意事項 2.字符串內置函數 3.字符串的索引、切片和遍歷 4.字符串運算符 5.字符串常用方法 性質判斷 開頭結尾判斷 是否存在某個子串 大小寫等格式轉化 子串替換 刪除兩端空白字符 格式化字符串 分割與合并 6.字符串模板 7.exec 函數 8.字符…

【Linux】-Zookeeper安裝部署[17]

簡介 apache ZooKeeper是一個分布式的&#xff0c;開放源碼的分布式應用程序協調服務&#xff0c;是Hadoop和Hbase的重要組件。它是一個為分布式應用提供一致性服務的軟件&#xff0c;提供的功能包括&#xff1a;配置維護、域名服務、分布式同步、組服務等。 除了為Hadoop和H…

2024最新 Jenkins + Docker 實戰教程(四) - 編寫自己的Springboot項目實現自動化部署

&#x1f604; 19年之后由于某些原因斷更了三年&#xff0c;23年重新揚帆起航&#xff0c;推出更多優質博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有堅忍不拔之志 &#x1f390; 個人CSND主頁——Mi…

VMware Num Lock 總自動切換的問題解決

VMware Num Lock 總自動切換的問題解決 0. 問題描述1. 解決方法 0. 問題描述 使用 VMware 虛擬機時&#xff0c;鼠標在 VMware 和主機之間切換時&#xff0c;總是顯示 “Num Lock 開” 和 “Num Lock 關” 的提示框。 1. 解決方法 在 VMware 系統中&#xff0c;按 fn num 統…