如何格式化QString?

我想为Qt标签格式化一个string,我正在使用C ++编程Qt。

在ObjC中,我会写如下的东西:

NSString *format=[NSString stringWithFormat: ... ]; 

如何在Qt中做这样的事情?

你可以像这样使用QString.arg

 QString my_formatted_string = QString("%1/%2-%3.txt").arg("~", "Tom", "Jane"); // You get "~/Tom-Jane.txt" 

这个方法比sprintf更受欢迎,因为:

改变string的位置而不必改变replace的顺序,例如

 // To get "~/Jane-Tom.txt" QString my_formatted_string = QString("%1/%3-%2.txt").arg("~", "Tom", "Jane"); 

或者,更改参数的types不需要更改格式string,例如

 // To get "~/Tom-1.txt" QString my_formatted_string = QString("%1/%2-%3.txt").arg("~", "Tom", QString::number(1)); 

正如你所看到的,改变是最小的。 当然,你通常不需要关心传入QString :: arg()的types,因为大多数types都被正确地重载了​​。

但是一个缺点:QString :: arg()不处理std :: string。 你需要在你的std :: string上调用:QString :: fromStdString(),把它传递给QString :: arg()。 尝试从使用std :: string的类中分离使用QString的类。 或者如果可以的话,完全切换到QString。

更新:示例更新谢谢弗兰克Osterfeld。

更新:示例更新感谢alexisdm。

您可以使用sprintf方法,但arg方法是首选,因为它支持unicode。

 QString str; str.sprintf("%s %d", "string", 213); 

使用QString::arg()具有相同的效果。