2010-07-09 17 views

Antwort

495

Verwendung QString::number():

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

Hier ist die interessantere Frage: Gibt es einen schnelleren Weg? Ich habe ein Problem festgestellt, bei dem diese Version fast mehr Zeit in Anspruch nimmt als die gesamte Verarbeitung danach ... – Zeks

+0

Dann möchten Sie wahrscheinlich an bereits zugewiesenen Puffern arbeiten ... aber das klingt nach einer eigenen Frage. –

8

In der einfachsten Form, verwenden Sie die Antwort von Georg Fritzsche

Für ein bisschen fortgeschritten, Sie diese verwenden können,

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

Holen Sie sich das Dokumentation und ein Beispiel here ..

+0

Leider funktioniert der Link zur Nokia Seite nicht mehr. –

96

Und wenn Sie es in Zeichenfolge innerhalb einiger Text Kontext setzen möchten, vergessen Sie + Operator. einfach tun:

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

Da Sie den Operator '+' erwähnen, achten Sie sorgfältig auf Ganzzahlen, da es sehr gut funktionieren kann, aber intern, wird die Operation 'operator + (const QString & s, char c)' aufgerufen, und die Zeichenfolge enthält die ganze Zahl nicht 'QChar :: fromAscii (c)' entspricht – x29a

+1

Da Sie den + Operator erwähnen, können Sie es tatsächlich tun, aber verstehen, was passiert: QString p = s + QString :: number (1); S ist ein QString funktioniert perfekt. Also, im Grunde QString + QString ist in Ordnung, QString + int ** schlecht **. –

10

Ich benutze QString::setNum() immer.

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

setNum() wird in vielerlei Hinsicht überlastet. Siehe QString Klassenreferenz.

12

Eine weitere Option ist QTextStream und der << Betreiber in der gleichen Weise zu verwenden, wie Sie cout in C++ verwenden würde:

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

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

Da Betreiber <<() überlastet ist, können Sie es für mehrere Typen verwenden, nicht nur int. QString::arg() ist überlastet, zum Beispiel arg(int a1, int a2), aber es gibt keine arg(int a1, QString a2), so dass QTextStream() und Operator << bequem ist, wenn Sie längere Strings mit gemischten Typen formatieren.

Vorsicht: Sie könnten versucht sein, die sprintf() Anlage zu verwenden C-Stil printf() Aussagen zu imitieren, aber es wird empfohlen, QTextStream oder arg() zu verwenden, da sie Unicode string s unterstützen.

16

Darüber hinaus konvertieren, was Sie wollen, können Sie QVariant verwenden. Für eine int zu einem QString Sie erhalten:

QVariant(3).toString(); 

A float zu einem string oder einem string mit einem Schwimmer:

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

'QVariant' Rulez! –

+0

Nennt mich verrückt, aber ich würde mehr Nutzen aus der Frage als "Wie konvertiert man eine Nummer zu QString?", Dies als die wichtigste Antwort für leichte Konvertierungen, und die anderen Antworten für spezielle Behandlungen. – mr3

-1

Nur der Vollständigkeit halber, können Sie die Standard-Bibliothek verwenden und tun QString qstr = QString::fromStdString(std::to_string(42));

Verwandte Themen