2016-02-19 7 views
5

के बाद नंबर के साथ मैं स्ट्रिंग पर .arg() का उपयोग करना चाहता हूं।क्यूस्ट्रिंग :: arg() प्लेसहोल्डर

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

मैं उत्पादन 66177 लेकिन निश्चित रूप से यह नहीं है %11 के बाद से वास्तविक उत्पादन प्लेसहोल्डर # 11 की बजाय प्लेस होल्डर # 1 एक शाब्दिक 1 के बाद के रूप में व्याख्या की है प्राप्त करना चाहते हैं: यह एक उदाहरण है।

क्या निम्न से बेहतर समाधान है?

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

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

उत्तर

1

arg% के बाद सबसे कम मूल्य के साथ अनुक्रम बदल देता है। रेंज betwen 1 और 99 होना चाहिए। तो आपको 1 अनुक्रमणिका का उपयोग करने की आवश्यकता नहीं है, आप एक अंक संख्या के बजाय दो अंकों का उपयोग कर सकते हैं।

इस प्रयास करें और देखें क्या होगा:

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

यह देना चाहिए आप परिणाम की उम्मीद (मैं क्यूटी 5.4 पर परीक्षण किया है यह और यह पूरी तरह से काम करता है)।

मैं भी प्रश्न के अंतर्गत समाधान प्रपत्र टिप्पणी परीक्षण किया है और यह काम करता है:।

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

अच्छा समाधान। हालांकि पढ़ने के लिए थोड़ा मुश्किल है। निश्चित रूप से एक कोड टिप्पणी की जरूरत है। – Silicomancer

1

arg() की भावना है कि यह है कि तुम क्यों %11 नहीं होना चाहिए %99 करने के लिए %1 से सब कुछ बदल रहा है है। इससे बचने के कई तरीके हैं।

आपका मार्ग के रूप में अच्छी तरह से आप अपने कोड में 1 के रूप में लगातार पहले हो सकता है के रूप में ठीक है:

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

या आप हो सकता है:

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

का उपयोग QString::number भी ठीक है के रूप में में निर्दिष्ट किया गया था टिप्पणी।

1

निम्नलिखित तरीकों में से एक का प्रयास करें:

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

मुझे उन्नत संख्या स्वरूपण की आवश्यकता होगी (जो QString :: संख्या का उपयोग करके उपलब्ध नहीं है)। फिर भी यह निश्चित रूप से मानक मामलों के लिए एक विकल्प है। – Silicomancer

+0

मरेक का समाधान निश्चित रूप से सार्वभौमिक है *** मस्तिष्क के लिए पोक *** ***। – Murphy

संबंधित मुद्दे