5

私は長い間QString::number()を使用して数値を文字列に変換してきましたが、次のよりも優れたものがあるかどうか疑問に思っています。

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

QString :: number()をどのように節約できますか?ドキュメントを確認しましたが、「%1」のみが適用可能で、「%d」のような他のものは機能しませんでした

4

3 に答える 3

12

QStringのarg()関数は実際に多くの異なるタイプを実装し、提供されたものを自動的に検出します。arg()このように1回の呼び出しに複数のパラメータを提供する

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

const char*QString(したがって)パラメーターに対してのみ実装されます。

ただし、arg呼び出しを連鎖させても、番号付けシステムを使用できます。

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);
于 2013-07-02T15:15:26.600 に答える
10

arg()このように直接使用できます

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

Qtは自動的に変換します

于 2011-11-24T10:43:45.907 に答える
0

QStringのドキュメントをご覧ください。さまざまなタイプをとる::argメソッドのオーバーロードがたくさんあります。QStringは、%nの下にあるタイプを知る必要はありません。その%nを置き換えるメソッドは、それを認識し、適切な値を設定します。

于 2011-11-24T10:46:07.290 に答える