如何格式化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()具有相同的效果。