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