1. 程式人生 > >C++學習初級之QString

C++學習初級之QString

QString提供一個二元+操作符來連線兩個字串和一個+=操作符來向一個字串追加字串。 因為QString在字串的結尾處自動預分配記憶體,所以通過反覆追加字元來增加一個字串是非常快的。 這是一個++=結合的例子:

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

還有一個QString::append()函式與+=操作符有這一樣的功能:

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

組合字串的一個完全不同的方式是使用QStringsprintf()函式:

str.sprintf("%s %.1f%%", "perfect competition", 100.0);

支援同樣的格式說明符像C++庫的sprintf()函式。 在上面的例子中,str被賦值為 "perfect competition 100.0%"。

從另外一個字串或數字來構建字串還有另外一種方式,就是使用arg()

str = QString("%1 %2 (%3s-%4s)") .arg("permissive").arg("society").arg(1950).arg(1970);

在這個例子中,"%1"被"permissive"替換,"%2被"society"替換,"%3"被"1950"替換,而"%4"被 "1970"替換。 結果是"permissive society (1950s-1970s)"。 arg()

過載支援各種各樣的資料型別。 某些過載有附加引數來控制域寬,數字基數,或浮點精度。 通常,arg()是比sprintf()更好的解決方案,因為它是型別安全(type-safe)的,完全支援Unicode,並且允許translators對"%n"引數重新排序。

QString能將數字轉換為字串,通過使用靜態函式QString::number()

str = QString::number(59.6);

或者使用setNum()函式:

str.setNum(59.6);

逆向變換,就是將一個字串轉換為一個數字,使用的是toInt()toLongLong()toDouble(),等等。 例如:

bool ok; double d = str.toDouble(&ok);