hub*_*zak 71 c++ qt string-formatting
我想为Qt标签格式化一个字符串,我在Qt上用C++编程.
在ObjC中,我会写一些类似于:
NSString *format=[NSString stringWithFormat: ... ];
Run Code Online (Sandbox Code Playgroud)
如何在Qt中做这样的事情?
Dat*_*Chu 151
您可以像这样使用QString.arg
QString my_formatted_string = QString("%1/%2-%3.txt").arg("~", "Tom", "Jane");
// You get "~/Tom-Jane.txt"
Run Code Online (Sandbox Code Playgroud)
这种方法比sprintf更受欢迎,因为:
更改字符串的位置而不必更改替换顺序,例如
// To get "~/Jane-Tom.txt"
QString my_formatted_string = QString("%1/%3-%2.txt").arg("~", "Tom", "Jane");
Run Code Online (Sandbox Code Playgroud)
或者,更改参数的类型不需要更改格式字符串,例如
// To get "~/Tom-1.txt"
QString my_formatted_string = QString("%1/%2-%3.txt").arg("~", "Tom", QString::number(1));
Run Code Online (Sandbox Code Playgroud)
如您所见,变化很小.当然,您通常不需要关心传递给QString :: arg()的类型,因为大多数类型都是正确重载的.
但有一个缺点:QString :: arg()不处理std :: string.您需要在std :: string上调用:QString :: fromStdString(),以便在将其传递给QString :: arg()之前将其转换为QString.尝试将使用QString的类与使用std :: string的类分开.或者,如果可以的话,完全切换到QString.
更新:感谢Frank Osterfeld更新了示例.
更新:感谢alexisdm更新了示例.
tro*_*foe 29
您可以使用该sprintf方法,但该arg方法是首选,因为它支持unicode.
QString str;
str.sprintf("%s %d", "string", 213);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
124228 次 |
| 最近记录: |