Qt QString類及常用函數功能詳解


QString 是 Qt 編程中常用的類,除了用作數字量的輸入輸出之外,QString 還有很多其他功能,熟悉這些常見的功能,有助於靈活地實現字符串處理功能。

QString 存儲字符串釆用的是 Unicode 碼,每一個字符是一個 16 位的 QChar,而不是 8 位的 char,所以 QString 處理中文字符沒有問題,而且一個漢字算作是一個字符。

 

append() 和 prepend()

append() 在字符串的后面添加字符串,prepend() 在字符串的前面添加字符串,如:

1 QString str1="",str2=""; 2 QString str3=str1; 3 str1.append (str2) ; //str1="賣拐"
4 str3.prepend (str2) ; //str3="拐賣"

oUpper() 和 toLower()

toUpper() 將字符串內的字母全部轉換為大寫形式,toLower() 將字母全部轉換為小寫形式,如:

1 QString str1="Hello, World", str2; 2 str2=str1.toUpper(); //str1="HELLO,WORLD"
3 str2=str1.toLower(); //str1="hello, world"

count()、size() 和 length()

count()、size() 和 length() 都返回字符串的字符個數,這 3 個函數是相同的,但是要注意,字符串中如果有漢字,一個漢字算一個字符。

1 QString str1="NI 好"
2 N=str1.count()  //N=3
3 N=str1.size() //N=3
4 N=str1.length() //N=3

trimmed() 和 simplified()

trimmed() 去掉字符串首尾的空格,simplified() 不僅去掉首尾的空格,中間連續的空格也用一個空格替換。

1 QString str1=" Are you OK? ", str2; 2 str2=str1.trimmed () ; //str1="Are you OK? "
3 str2=str1.simplified(); //str1="Are you OK?"

indexOf () 和 lastIndexOf ()

indexOf() 函數的原型為:

int indexOf (const QString &str, int from = 0 , Qt::CaseSensitivity cs = Qt::CaseSensitive) const

其功能是在自身字符串內查找參數字符串 str 出現的位置,參數 from 是幵始查找的位置,Qt::CaseSensitivity cs 參數指定是否區分大小寫。

lastIndexOf() 函數則是查找某個字符串最后出現的位置。

1 QString str1="G:\Qt5Book\QT5.9Study\qw.cpp"; 2 N=str1.indexOf("5.9");  // N=13
3 N=str1.lastIndexOf("\\"); //N=21

提示,"\" 是轉義字符,如果要查找 "\",需要輸入 "\\"。

isNull() 和 isEmpty()

兩個函數都判讀字符串是否為空,但是稍有差別。如果一個空字符串,只有“\0”,isNull() 返回 false,而 isEmpty() 返回 true;只有未賦值的字符串,isNull() 才返回 true。

1 QString str1, str2=""; 2 N=str1.isNull () ; // N=true 未賦值字符串變量
3 N=str2.isNull () ; // N=false 只有"\0"的字符串,也不是 Null
4 N=str1.isEmpty(); // N=true
5 N=str2.isEmpty(); // N=true

QString 只要賦值,就在字符串的末尾自動加上 "\0",所以,如果只是要判斷字符串內容是否為空,常用 isEmpty()。

contains()

判斷字符串內是否包含某個字符串,可指定是否區分大小寫。

1 QString str1="G:\Qt5Book\QT5.9Study\qw.cpp"; 2 N=str1.contains (".cpp", Qt::CaseInsensitive) ; // N=true,不區分大小寫
3 N=str1.contains (".CPP", Qt::CaseSensitive) ;  // N=false,區分大小寫

endsWith() 和 startsWith()

startsWith() 判斷是否以某個字符串幵頭,endsWith() 判斷是否以某個字符串結束。

1 QString str1=MG:\Qt5Book\QT5.9Study\qw.cpp";
2 N=str1.endsWith (".cpp", Qt::CaseInsensitive) ; // N=true,不區分大小寫
3 N=str1.endsWith (".CPP", Qt::CaseSensitive) ; // N=false,區分大小寫
4 N=str1.startsWith ("g: ") ; // N=true,缺省為不區分大小寫

left() 和 right()

left 表示從字符串中取左邊多少個字符,right 表示從字符串中取右邊多少個字符。注意,一個漢字被當作一個字符。

1 QString str2, str1="學生姓名,男,1984-3-4,漢族,山東"; 2 N=str1.indexOf (",") ; // N=4,第一個","出現的位置
3 str2=str1.left (N) ; //str2="學生姓名"
4 N=str1.lastIndexOf (",") ; // N=18,最后一個逗號的位置
5 str2=str1.right (str1.size()-N-1); //str2=”山東",提取最后一個逗號之后的字符串

section()

section() 函數的原型為:

QString section (const QString &sep, int start, int end = -1, SectionFlags flags = SectionDefault) const

其功能是從字符串中提取以 sep 作為分隔符,從 start 端到 end 端的字符串。

1 QString str2, str1="學生姓名,男,1984-3-4,漢族,山東"; 2 str2=str1.section (",",0,0); // str2="學生姓名", 第 1 段的編號為 0
3 str2=str1.section (",",1,1}; // str2="男"
4 str2=str1.section (",",0,1}; // str2="學生姓名,男"
5 str2=str1.section (",",4,4); // str2="山東"

QString 還有很多功能函數沒有在此介紹,在使用中如果遇到,可查詢 Qt 的幫助文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM