QString提供一个二元+操作符来连接两个字符串和一个+=操作符来向一个字符串追加字符串。 因为QString在字符串的结尾处自动预分配内存,所以通过反复追加字符来增加一个字符串是非常快的。 这是一个+和+=结合的例子:
QString str = "User: "; str += userName + "\n";还有一个QString::append()函数与+=操作符有这一样的功能:
str = "User: "; str.append(userName); str.append("\n");组合字符串的一个完全不同的方式是使用QString的sprintf()函数:
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);