2016-02-19 15 views
5

Bir dizgede .arg() kullanmak istiyorum. Ben 66177 ama tabii bu %11 beri fiili çıkış tutucu # 11 yerine bir hazır 1'den sonra yer tutucu 1. olarak yorumlanır değildir çıktı almak istiyorumQString :: arg() ile yer tutucudan sonra sayı

qDebug() << QString("%11%2").arg(66).arg(77); 

: Bu bir örnektir.

Aşağıdakilerden daha iyi bir çözüm var mı?

qDebug() << QString("%1%2%3").arg(66).arg(1).arg(77); 
+2

'qDebug() << QString ("% 011% 02") arg (66) .arg (77); – Meefte

cevap

1

arg% sonra en düşük değere sahip dizisini değiştirir. Aralık 1 ve 99 arasında olmalıdır. Yani 1 endeksini kullanmanız gerekmiyor, bunun yerine iki haneli bir sayı yerine bir rakam kullanabilirsiniz.

bu deneyin ve ne olacağını görmek: Bu sonuç beklenen vermelidir

qDebug() << QString("%111%22").arg(66).arg(77); 

(Ben qt 5.4 üzerinde test ettiğimiz ve mükemmel çalışıyor).

Ben aynı zamanda söz konusu çözüm formu yorumunu test ettik ve o inşaat için:.

qDebug() << QString("%011%02").arg(66).arg(77); 
+0

İyi bir çözüm. Ancak okumak biraz zor. Kesinlikle bir kod yorumu gerekiyor. – Silicomancer

1

arg() duygusu size %11 olmamalıdır neden olduğunu %99 için %1 her şeyi yerine olmasıdır. Bundan kurtulmanın birkaç yolu var.

qDebug() << QString("%1%2%3").arg(66).arg(1).arg(77); 

Yoksa olabilir:

Yeniden hiç de kodunuzda 1 olarak sabit erken olabilir gibi ince

qDebug() << QString("%1").arg(66) + "1" + QString("%1").arg(77); 

belirtildi olarak QString::number çok ok kullanma yorum Yap.

1

aşağıdaki yaklaşımlardan biri deneyin:

  • QString::number(66) + "1" + QString::number(77)
  • QString("%1 1 %2").arg(66).arg(77).replace(" ", "")
+0

Gelişmiş sayı biçimlendirmesine ihtiyacım var (QString :: number kullanılarak mevcut değildir). Yine de bu kesinlikle standart vakalar için bir alternatiftir. – Silicomancer

+0

Marek'in çözümü kesinlikle evrensel olanıdır *** ***. – Murphy