2011-11-24 9 views
5

Używam QString :: numer (numery) przekonwertować ciąg na długi czas, teraz zastanawiam się, czy jest coś lepszego niż następujące:Dodanie numeru do QString z arg(), czy istnieją lepsze sposoby?

int i = 0; 
    QString msg = QString ("Loading %1").arg (QString::number (i)); 

Jak mogę oszczędzić QString :: numer ()? Sprawdziłem dokument wydaje się tylko „% 1” jest stosowane, nie ma innych rzeczy jak „% d” może pracować

+0

Jaka jest motywacja? Aby zapisać wpisywanie lub coś innego? –

+0

@r_ahlskog, tak, w pewnym sensie i myślę, że jeśli 'printf' jak format string jest możliwy – daisy

+0

@r_ahlskog,% 1 wydaje się dość ogólne – daisy

Odpowiedz

8

można korzystać bezpośrednio arg() tak

int i = 0; 
QString msg = QString ("Loading %1").arg(i); 

Qt automatycznie przekonwertuje go dla Ciebie

0

Zapoznaj się z dokumentacją QString. Masz wiele przeciążeń metody :: arg, które przyjmują różne typy. QString nie musi wiedzieć, jaki typ będzie pod% n, metoda zastępująca ten% n będzie go znać i umieścić właściwą wartość.

10

Funkcja QString arg() rzeczywiście implementuje wiele różnych typów i automatycznie wykrywa to, co je podajesz. Zapewnienie wielu parametrów do pojedynczego arg() rozmowy jak tak

// Outputs "one two three" 
QString s = QString("%1 %2 %3").arg("one", "two", "three") 

realizowany jest wyłącznie dla QString (a więc const char*) parametry.

Jednakże, można łańcuch arg nazywa razem i nadal korzystać z systemu numeracji:

int i = 5; 
size_t ui = 6; 
int j = 12; 
// Outputs "int 5 size_t 6 int 12" 
qDebug() << QString("int %1 size_t %2 int%3").arg(i).arg(ui).arg(j); 
// Also outputs "int 5 size_t 6 int 12" 
qDebug() << QString("int %1 int %3 size_t %2").arg(i).arg(j).arg(ui);