C++ 如何将 int 转换为 QString?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/3211771/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to convert int to QString?
提问by Ahmad
Is there a QString
function which takes an intand outputs it as a QString
?
是否有一个QString
函数接受一个int并将其输出为 a QString
?
回答by Georg Fritzsche
回答by Kamil Klimek
And if you want to put it into string within some text context, forget about +
operator.
Simply do:
如果您想将其放入某个文本上下文中的字符串中,请忘记+
运算符。简单地做:
// Qt 5 + C++11
auto i = 13;
auto printable = QStringLiteral("My magic number is %1. That's all!").arg(i);
// Qt 5
int i = 13;
QString printable = QStringLiteral("My magic number is %1. That's all!").arg(i);
// Qt 4
int i = 13;
QString printable = QString::fromLatin1("My magic number is %1. That's all!").arg(i);
回答by Gabriel de Grimouard
Moreover to convert whatever you want, you can use QVariant
.
For an int
to a QString
you get:
此外,要转换您想要的任何内容,您可以使用QVariant
. 对于 aint
到 aQString
你得到:
QVariant(3).toString();
A float
to a string
or a string
to a float
:
Afloat
到 astring
或 astring
到 a float
:
QVariant(3.2).toString();
QVariant("5.2").toFloat();
回答by Matthew Kraus
Yet another option is to use QTextStreamand the <<
operator in much the same way as you would use cout
in C++:
另一种选择是以与在 C++ 中使用的方式大致相同的方式使用QTextStream和<<
运算符cout
:
QPoint point(5,1);
QString str;
QTextStream(&str) << "Mouse click: (" << point.x() << ", " << point.y() << ").";
// OUTPUT:
// Mouse click: (5, 1).
Because operator <<()
has been overloaded, you can use it for multiple types, not just int
. QString::arg()
is overloaded, for example arg(int a1, int a2)
, but there is no arg(int a1, QString a2)
, so using QTextStream()
and operator <<
is convenient when formatting longer strings with mixed types.
由于运算符<<()
已重载,因此您可以将其用于多种类型,而不仅仅是int
. QString::arg()
例如arg(int a1, int a2)
,被重载,但没有arg(int a1, QString a2)
,因此在使用混合类型格式化较长的字符串时,使用QTextStream()
and 运算符<<
很方便。
Caution:You might be tempted to use the sprintf()
facility to mimic C style printf()
statements, but it is recommended to use QTextStream
or arg()
because they support Unicode string
s.
注意:您可能想使用该sprintf()
工具来模拟 C 风格的printf()
语句,但建议使用QTextStream
或arg()
因为它们支持 Unicode string
s。
回答by Narek
I always use QString::setNum()
.
我总是使用QString::setNum()
.
int i = 10;
double d = 10.75;
QString str;
str.setNum(i);
str.setNum(d);
setNum()
is overloaded in many ways. See QString
class reference.
setNum()
在很多方面都超载了。请参阅QString
类参考。
回答by liaK
In it's simplest form, use the answer of Georg Fritzsche
以最简单的形式,使用Georg Fritzsche的答案
For a bit advanced, you can use this,
对于有点高级,你可以使用这个,
QString QString::arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const
Get the documentation and an example here..
在此处获取文档和示例..
回答by Morgan
Just for completeness, you can use the standard library and do QString qstr = QString::fromStdString(std::to_string(42));
为了完整起见,您可以使用标准库并执行 QString qstr = QString::fromStdString(std::to_string(42));
回答by André
If you need locale-aware number formatting, use QLocale::toString instead.
如果您需要识别区域设置的数字格式,请改用 QLocale::toString。