如何格式化 QString?

发布于 2024-10-13 08:19:11 字数 186 浏览 2 评论 0原文

我想格式化 Qt 标签的字符串,我在 Qt 上用 C++ 编程。

在 ObjC 中我会写这样的内容:

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

How to do things like that in Qt?

I'd like to format a string for Qt label, I'm programming in C++ on Qt.

In ObjC I would write something like:

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

How to do something like that in Qt?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

死开点丶别碍眼 2024-10-20 08:19:11

您可以像这样使用 QString.arg

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

该方法优于 sprintf,因为:

更改字符串的位置而不必更改替换顺序,例如

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

或者,更改参数的类型不需要更改格式字符串,例如

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

如您所见,变化很小。当然,您通常不需要关心传递给 QString::arg() 的类型,因为大多数类型都已正确重载。

但有一个缺点:QString::arg() 不处理 std::string。在将 std::string 传递给 QString::arg() 之前,您需要调用: QString::fromStdString() 将其转换为 QString。尝试将使用 QString 的类与使用 std::string 的类分开。或者如果可以的话,完全切换到 QString。

更新:示例由 Frank Osterfeld 更新。

更新:感谢 alexisdm 更新了示例。

You can use QString.arg like this

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

This method is preferred over sprintf because:

Changing the position of the string without having to change the ordering of substitution, e.g.

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

Or, changing the type of the arguments doesn't require changing the format string, e.g.

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

As you can see, the change is minimal. Of course, you generally do not need to care about the type that is passed into QString::arg() since most types are correctly overloaded.

One drawback though: QString::arg() doesn't handle std::string. You will need to call: QString::fromStdString() on your std::string to make it into a QString before passing it to QString::arg(). Try to separate the classes that use QString from the classes that use std::string. Or if you can, switch to QString altogether.

UPDATE: Examples are updated thanks to Frank Osterfeld.

UPDATE: Examples are updated thanks to alexisdm.

梦醒灬来后我 2024-10-20 08:19:11

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

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

You can use the sprintf method, however the arg method is preferred as it supports unicode.

QString str;
str.sprintf("%s %d", "string", 213);
我恋#小黄人 2024-10-20 08:19:11

使用 QString::arg()一样的效果。

Use QString::arg() for the same effect.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文