QString
#include<QString>
- 追加字元
QString str1 = "hello ";
QString str2 = "world";
str1.append(str2); // str1 = "hello world"
str1.append(" !"); // str1 = "hello world !"
// 對字串直接 + 另一個字串也可以實現,但是不對原本的字串進行操作
QString str3 = str1 + str2 + " !"; // str3 = "hello world !" str1 = "hello "
- 從字串中查詢某個字串
QString x = "sticky question";
QString y = "sti";
int iPos = x.indexOf(y); // 返回0
// 函式indexOf()會返回要查詢的字串在字串中第一次出現的位置
// 如果沒有要查詢的字串,返回-1
3.從字串中查詢某個字串最後出現的位置
QString strPath = ".C://Users/XXX/Desktop/111.txt";
int iPos = strPath.lastIndexOf("."); // iPos值為26
// 函式indexOf()會返回要查詢的字串在字串中最後一次出現的位置
// 如果沒有要查詢的字串,返回-1
// 一般用於獲取一個檔案路徑後,判斷檔案的字尾名
- 用某個字元填滿字串
QString str = "Hello";
str.fill('x'); // str == "xxxxx"
str.fill('A', 2); // str == "AA"
- 判斷字串是否為空
QString().isEmpty(); // 返回 true
QString("").isEmpty(); // 返回 true
QString(" ").isEmpty(); // 返回 false
QString("abc").isEmpty(); // 返回 false
- 判斷字串是否存在
QString().isNull(); // 返回 true
QString("").isNull(); // 返回 false
QString("abc").isNull(); // 返回 false
- 從左向右擷取字串
QString str = "Hello World !";
QString str1 = str.left(5); // str1 = "Hello"
- 從中間擷取字串
QString str = "I love C++!";
QString str1 = str.mid(2, 4); // str1 == "love"
QString str2 = str.mid(2); // str2 == "love C++!"
- 擷取字串中最右邊幾個字元
QString str = "I love C++!";
QString str1 = str.right(4); // str = I love C++! str1 = "C++!"
- 刪除字串中的最後幾個字元
QString str = "Hello World !";
str.chop(8); // str = "Hello"
- 刪除字串中間某個字元
QString str = "Hello World!";
str.remove(5, 6); // str = "Hello!"
- 指定位置插入字串
QString str = "Hello!";
str.insert(5, QString(" World")); // str = "Hello World!"
- 用幾個字元替換字串中的幾個字元
QString x = "Say yes!";
QString y = "no";
x.replace(4, 3, y); // x = "Say no!"
x.replace("yes", "no"); // x = "Say no!"
14.字串補零到指定位
QString str = "A6";
//如果要把str補全到8位,空位用0補全
QString str1 = QString("%1").arg(str, 8, QLatin1Char('0')); //str1 = "000000A6"
//arg裡第一個引數是要補全的字串,第二個引數是要補全到的位數,第三個引數是用什麼字元補全,可以不是0的其他字元
15.整型十進位制轉為十六進位制字串並補零到指定位
int n = 66;
//如果要把n轉換為十六進位制並補全到8位
QString str = QString("%1").arg(n, 8, 16, QLatin1Char('0')); // str = "00000042"
//arg裡第一個引數是十進位制整型的數,第二個引數是要補全到的位數,第三個引數是要轉換的進位制,可以是十六進位制也可以是十進位制
//第四個引數是用什麼字元補全,可以不是0的其他字元
- 以某個字元切割字串
QString csv = "forename,middlename,surname,phone";
QString path = "/usr/local/bin/myapp";
//section()會把字串以第一個引數的符號切割分成數個字串,後面兩個引數是得到的字串的開始和結束的位置
QString str;
str = csv.section(',', 2, 2); // str = "surname"
str = path.section('/', 3, 3); // str = "bin"
str = path.section('/', 3, 4); // str = "bin/myapp"
str = path.section('/', 3, 3, QString::SectionSkipEmpty); // str = "myapp"
- 以某個字元切割字串另一種方法
QString str = "a,,b,c";
QStringList list1 = str.split(',');
// list1: [ "a", "", "b", "c" ]
QStringList list2 = str.split(',', QString::SkipEmptyParts);
// list2: [ "a", "b", "c" ]
- 檢查字串是否以某個字串開頭或結尾
QString str = "http://www.baidu.com";
str.startsWith("http:"); // 返回true
str.endsWith("cn"); // 返回false
//這個方法比left()和right()要簡單快速,通常用來檢查路徑或者網址
- 比較兩個字串是否相等
QString str1 = "xxx";
QString str2 = "XXX";
//localeAwareCompare()會比較兩個引數的大小,如果str1小於str2,返回小於0的數,等於返回0,大於返回大於0的數
QString::localeAwareCompare(str1, str2) // 返回 -1
//localeAwareCompare()的比較區分大小寫,想要不區分大小寫,可以使用toLower()或toUpper()使字串全變成小寫或大寫
if(QString::localeAwareCompare(str1.toUpper(), str2) == 0)
{
qDebug() << "str1和str2相等"; // 返回0,輸出:str1和str2相等
}
- 去除字串兩側的空白字元(空白字元包括空格、Tab以及換行符,而不僅僅是空格)
QString str = " xxx ";
QString str1 = str.trimmed();
21.QString其他有用的用法
QString::arg()用法
QString str = QString("%1 %2 %3").arg(1).arg(2.0).arg("hello");
%1, %2, %3作為佔位符,將被後面的arg()函式中的內容依次替換,比如%1將被替換成1,%2將被替換成2.0,%3將被替換成"hello"。輸出為:"1 2 hello"
QString::sprintf用法
QString
str.sprintf("%d %s", 10, "hello");