一.基礎用法
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需要注意的點
字符串的不可變性:QString是不可變的,即一旦創建了一個QString對象,就不能直接修改其內容。任何對QString對象的修改都會返回一個新的QString對象。
字符串的編碼:QString默認使用UTF-16編碼存儲字符串,但可以通過toUtf8()、toLatin1()等方法將字符串轉換為其他編碼。
字符串的拷貝:當對QString對象進行操作時,會涉及到字符串的拷貝。因為QString是不可變的,任何修改操作都會創建一個新的QString對象,而不是在原對象上直接修改。
字符串的性能:在處理大量字符串時,需要注意QString的性能。頻繁的字符串拼接、替換等操作可能會導致性能問題,可以考慮使用QByteArray或QTextStream等類來處理大量字符串。
字符串的比較:在比較字符串時,需要注意區分大小寫或忽略大小寫。可以使用QString的compare()方法來進行比較,并指定比較規則。
字符串的空值檢查:在使用QString時,需要注意對空值進行檢查,以避免空指針異常。可以使用isEmpty()方法來判斷字符串是否為空。
字符串的轉換:在將QString轉換為其他類型時,需要注意轉換的準確性。比如將QString轉換為整數時,需要確保字符串中只包含數字字符。
字符串的拆分:在拆分字符串時,需要考慮分隔符的處理。可以使用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);}