[英]How to convert int to QString?
是否有一個QString
函數接受一個int並將其輸出為QString
?
int i = 42;
QString s = QString::number(i);
如果你想把它放在一些文本上下文中的字符串中,忘記+
運算符。 只需這樣做:
// 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);
此外,要轉換任何你想要的,你可以使用QVariant
。 對於QString
的int
,您會得到:
QVariant(3).toString();
一個float
到一個string
或一個string
到一個float
:
QVariant(3.2).toString();
QVariant("5.2").toFloat();
另一種選擇是使用QTextStream和<<
運算符,其方式與在 C++ 中使用cout
的方式大致相同:
QPoint point(5,1);
QString str;
QTextStream(&str) << "Mouse click: (" << point.x() << ", " << point.y() << ").";
// OUTPUT:
// Mouse click: (5, 1).
因為 operator <<()
已經被重載,你可以將它用於多種類型,而不僅僅是int
。 QString::arg()
被重載,例如arg(int a1, int a2)
,但是沒有arg(int a1, QString a2)
,所以使用QTextStream()
和 operator <<
在格式化較長的字符串時很方便類型。
注意:您可能很想使用sprintf()
工具來模仿 C 風格的printf()
語句,但建議使用QTextStream
或arg()
,因為它們支持 Unicode string
。
我總是使用QString::setNum()
。
int i = 10;
double d = 10.75;
QString str;
str.setNum(i);
str.setNum(d);
setNum()
在很多方面都被重載了。 請參閱QString
類參考。
以最簡單的形式,使用Georg Fritzsche的答案
對於有點高級,你可以使用這個,
QString QString::arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const
在此處獲取文檔和示例..
如果您需要支持區域設置的數字格式,請改用 QLocale::toString。
為了完整起見,您可以使用標准庫並執行QString qstr = QString::fromStdString(std::to_string(42));
QLocale 有一種方便的數字轉換方法。 它的打字量並不比公認的答案多多少,但在浮點數的情況下更有用; 所以我喜歡這樣做。 這是一個int:
int i = 42;
QString s = QLocale::toString(i);
這是一個浮動:
float f=42.5;
QString s = QLocale::toString(f, 1);
最后一個參數是小數位數。 您還可以為第二個參數插入 char 格式參數,例如“f”或“e”。 這樣做的好處是,如果您的程序隨后在逗號用作小數點“點”的語言環境中運行,它將自動以這種方式打印。 它不包含在<QCoreApplication>
之類的東西中,因此您當然必須在某處執行#include <QLocale>
。 它在格式化貨幣字符串方面真正發揮了作用。
你可以寫:
QString s = QString::number(42.5, 'f', 1);
但根據幫助“與 QLocale::toString() 不同,此函數不遵守用戶的區域設置。”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.