intをQStringに変換する方法は?


回答:


656

使用QString::number()

int i = 42;
QString s = QString::number(i);

2
これはより興味深い質問です:より速い方法はありますか?その後、このバージョンでは処理全体よりも時間がかかるという問題が発生しました...
Zeks

次に、事前に割り当てられたバッファで作業したいと思うかもしれませんが、これは別の質問のように聞こえます。
Georg Fritzsche 2017

122

また、テキストコンテキスト内で文字列にしたい場合は、+演算子を忘れてください。単に行います:

// 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);

2
あなたは言及しているので+、オペレータ、慎重に周りの整数、それは非常によく働くかもしれないが、内部であるため、operator+(const QString &s, char c)実装が呼び出され、文字列が数値として整数が、その含まれて文句を言わないQChar::fromAscii(c)と同等
x29a

3
+演算子について言及したので、実際にはそれを行うことができますが、何が起こっているのかを理解します。QString p = s + QString :: number(1); QStringであることは完璧に機能します。したがって、基本的にQString + QStringは問題ありませんが、QString + int badです。
DavidSánchez

28

さらに、あなたが望むものを何でも変換するために、あなたは使うことができますQVariant。以下のためintQStringあなたが得ます:

QVariant(3).toString();

A floatto a stringまたはa stringto a float

QVariant(3.2).toString();
QVariant("5.2").toFloat();

1
QVariantルールズ!
Mr.Coffee 2017年

ナッツと呼んでもいいですが、「数値をQStringに変換する方法は?」という質問は、これが軽量変換の主な答えであり、その他の特別な扱いの答えです。
mr3

17

さらに別のオプションは、C ++で使用するのとほぼ同じ方法でQTextStream<<演算子を使用することcoutです。

QPoint point(5,1);
QString str;
QTextStream(&str) << "Mouse click: (" << point.x() << ", " << point.y() << ").";

// OUTPUT:
// Mouse click: (5, 1).

演算子<<()はオーバーロードされているため、だけでなく、複数の型に使用できますintQString::arg()たとえばarg(int a1, int a2)、はオーバーロードされますが、はありませんarg(int a1, QString a2)。したがって、より長い文字列を混合タイプでフォーマットする場合QTextStream()、and演算子を使用すると<<便利です。

注意:あなたは使用するように誘惑されるかもしれないsprintf()模倣Cスタイルの施設printf()の文を、それを使用することをお勧めしQTextStreamたりarg()、彼らは、Unicodeサポートするためstringの。


14

私はいつも使用していますQString::setNum()

int i = 10;
double d = 10.75;
QString str;
str.setNum(i);
str.setNum(d);

setNum()多くの方法でオーバーロードされています。参照QStringクラス参照を。


12

最も単純な形式では、Georg Fritzscheの回答を使用してください

少し高度な場合は、これを使用できます。

QString QString::arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const

ドキュメントとサンプルをここから入手してください


残念ながら、Nokiaサイトへのリンクは機能しなくなりました。
Eliyahu Skoczylas 2016年

3

完全を期すために、標準ライブラリを使用して、 QString qstr = QString::fromStdString(std::to_string(42));


3

ロケール対応の数値フォーマットが必要な場合は、代わりにQLocale :: toStringを使用してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.