Qt字符串處理 QString用法總結(二)


轉:https://www.cnblogs.com/qianqiannian/p/6415329.html

C++語言提供了兩種字符串的實現:C風格的字符串,以'\0‘結尾;std::string,即標准模版庫中的類。Qt則提供了自己的字符串實現:QString,QString不用擔心內存分配以及關於'\0'結尾的這些注意事項

  另外,與C風格的字符串不同,QString中間是可以包含'\0'符號的,而length()函數則會返回整個字符串的長度,而不僅僅是從開始到'\0'的長度。同Java的String類類似,QString也重載的+和+=運算符。

  這兩個運算符可以把兩個字符串連接到一起,QString可以自動的對占用內存空間進行擴充,這種連接操作是很迅速的

  示例:

1  QString str = "User: ";
2     str += userName + "\n";

  QString的append()函數則提供了類似的操作,例如:

1 str = "User: "; 
2 str.append(userName); 
3 str.append("\n");

  使用static的函數number()可以把數字轉換成字符串。例如:

 1 QString str = QString::number(54.3); 

  你也可以使用非static函數setNum()來實現相同的目的:

 1 QString str; str.setNum(54.3); 

   而一系列的to函數則可以將字符串轉換成其他基本類型,例如toInt(), toDouble(), toLong()等。這些函數都接受一個bool指針作為參數,函數結束之后將根據是否轉換成功設置為true或者false:

1 bool ok; double d = str.toDouble(&ok); 
2 if(ok) { // do something... }
3  else { // do something... }

  對於QString,Qt提供了很多操作函數,例如,使用mid()函數截取子串:

1 QString x = "Nine pineapples"; 
2 QString y = x.mid(5, 4);
3  // y == "pine" QString z = x.mid(5); /
4 / z == "pineapples"

  mid()函數接受兩個參數,第一個是起始位置,第二個是取串的長度。如果省略第二個參數,則會從起始位置截取到末尾。正如上面的例子顯示的那樣。

  函數left()和rigt()類似,都接受一個int類型的參數n,都是對字符串進行截取。不同之處在於,left()函數從左側截取n個字符,而right()從右側開始截取。下面是left()的例子:

1 QString x = "Pineapple"; 
2 QString y = x.left(4); 
3 // y == "Pine"

  函數startsWith()和endsWith()可以檢測字符串是不是以某個特定的串開始或結尾,例如:

 1  if (url.startsWith("http:") && url.endsWith(".png")) { } 

  這段代碼等價於

1  if (url.left(5) == "http:" && url.right(4) == ".png") { }

  只不過前者要比后者更加清楚簡潔,並且性能也更快.

  QString還提供了replace()函數供實現字符串的替換功能;trimmed()函數去除字符串兩側的空白字符(注意,空白字符包括空格、Tab以及換行符,而不僅僅是空格);toLower()和toUpper()函數會將字符串轉換成小寫大寫字符串;

  remove()和insert()函數提供了刪除和插入字符串的能力;simplified()函數可以將串中的所有連續的空白字符替換成一個,並且把兩端的空白字符去除,例如" \t ”會返回一個空格" "。

  將const char *類型的C風格字符串轉換成QString也是很常見的需求,簡單來說,QString的+=即可完成這個功能:  

 1 str += " (1870)"; 

  這里,我們將const char * 類型的字符串" (1870)"轉換成為QString類型。  

  判斷字符串是否為空

 1 bool QString::isEmpty () const 

如:
1 QString().isEmpty();            // returns true
2 QString("").isEmpty();          // returns true
3 QString("x").isEmpty();         // returns false
4 QString("abc").isEmpty();       // returns false

判斷字符串是否存在

 1 bool QString::isNull () const 

  如:
1 QString().isNull();             // returns true
2 QString("").isNull();           // returns false
3 QString("abc").isNull();        // returns false

  使某個字符填滿字符串,也就是說字符串里的所有字符都有等長度的ch來代替。

QString::fill ( QChar ch, int size = -1 )

  如:

復制代碼
     QString str = "Berlin";
     str.fill('z');
     // str == "zzzzzz"

     str.fill('A', 2);
     // str == "AA"
復制代碼

  從字符串里查找相同的某個字符串str。

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

  如:

復制代碼
QString x = "sticky question";
     QString y = "sti";
     x.indexOf(y);               // returns 0
     x.indexOf(y, 1);            // returns 10
     x.indexOf(y, 10);           // returns 10
     x.indexOf(y, 11);           // returns -1
復制代碼

  指定位置插入字符串

QString & QString::insert ( int position, const QString & str )

  如:

     QString str = "Meal";
     str.insert(1, QString("ontr"));
     // str == "Montreal"

  刪除字符串中間某個字符。

QString & QString::remove ( int position, int n )

  如:

     QString s = "Montreal";
     s.remove(1, 4);
     // s == "Meal"

  替換字符串中的某些字符。

QString & QString::replace ( int position, int n, const QString & after )

  如:

     QString x = "Say yes!";
     QString y = "no";
     x.replace(4, 3, y);
     // x == "Say no!"


免責聲明!

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



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