शून्य पैडिंग (अग्रणी शून्य) के साथ एक QString में एक उदाहरण बदलें


93

मैं एक नंबर को "स्ट्रिफ़ाइज़" करना चाहता हूं और शून्य-पेडिंग जोड़ना चाहता हूं, जैसे कि printf("%05d")अगर 5 लाख से कम है तो अग्रणी शून्य कैसे जोड़ेंगे।

जवाबों:


178

इसे इस्तेमाल करो:

QString number = QStringLiteral("%1").arg(yourNumber, 5, 10, QLatin1Char('0'));

5 यहाँ 5 से मेल खाती है printf("%05d")। 10 मूलांक है, आप हेक्स में संख्या को प्रिंट करने के लिए 16 डाल सकते हैं।


8
धन्यवाद। यहाँ प्रलेखन ।
मागा

2
पूर्णांक से हेक्स रंग कोड बनाने के लिए बहुत उपयोगी है, धन्यवाद :)
मीकल

और स्ट्रिंग तर्क क्यों है "%1"?
14

@Zaibis क्योंकि यह पहला तर्क है। यदि अधिक थे, तो वे होंगे %2आदि। देखें doc.qt.io/qt-5/qstring.html#arg
पॉल मसरी-स्टोन

@sashoalm हम अग्रणी शून्य की समान संख्या को कैसे निकाल सकते हैं? पूर्व। मेरा हेक्स QString ("% 1") के साथ 1f था। arg (yourNumber, 5, 10, QChar ('0')); यह 001f बन गया। अब 1f को फिर से प्राप्त करने के लिए रिवर्स कैसे करें? अग्रिम में मदद के लिए धन्यवाद।
जिमित रुपाणी

37

QString QString :: rightJustified (int चौड़ाई, QChar भराव = QLatin1Char (''), बूल ट्रंकट = गलत) const

int myNumber = 99;
QString result;
result = QString::number(myNumber).rightJustified(5, '0');

परिणाम अब 00099 है


धन्यवाद, मैं + = का उपयोग करके मक्खी पर एक स्ट्रिंग बना रहा हूं ताकि चयनित समाधान का उपयोग नहीं किया जा सके।
रूडी बारबेरी

बेहतर है लेकिन फिर भी एक अस्थायी स्ट्रिंग बनाता है: /
Trass3r

18

संक्षिप्त उदाहरण:

int myNumber = 9;

//Arg1: the number
//Arg2: how many 0 you want?
//Arg3: The base (10 - decimal, 16 hexadecimal - if you don't understand, choose 10)
//      It seems like only decimal can support negative numbers.
QString number = QString("%1").arg(myNumber, 2, 10, QChar('0')); 

Output will be: 09

3

प्रयत्न:

QString s = s.sprintf("%08X",yournumber);

संपादित करें: http://qt-project.org/doc/qt-4.8/qstring.html#dprintf पर डॉक्स के अनुसार :

चेतावनी : हम नए Qt कोड में QString :: sprintf () का उपयोग करने की अनुशंसा नहीं करते हैं। इसके बजाय, QTextStream या arg () का उपयोग करने पर विचार करें, जो दोनों यूनिकोड स्ट्रिंग्स को मूल रूप से समर्थन करते हैं और टाइप-सुरक्षित हैं। यहाँ एक उदाहरण है जो QTextStream का उपयोग करता है:

QString result;
QTextStream(&result) << "pi = " << 3.14;
// result == "pi = 3.14"

इस विधि से अनुपलब्ध सुविधाओं के लिए अन्य डॉक्स पढ़ें।


सबसे अच्छा समाधान के रूप में अंकन अच्छा नहीं है, क्योंकि वर्तमान में चिह्नित उत्तर अधिक लचीला है। लेकिन जानकर अच्छा लगा! (
upvoting

-1

मैं VB 5 के बाद से एक तकनीक का उपयोग करता हूं

QString theStr=QString("0000%1").arg(theNumber).right(4);

बहुत सारे मेमचपी () और व्यर्थ मेमोरी / सीपीयू का एक लॉग। यदि आप Qt / C ++ का उपयोग कर रहे हैं, तो आप प्रदर्शन चाहते हैं (कहा कि, मैंने इस तरकीब को JS में उपयोग किया है, और यह इस प्लेटफॉर्म पर एक अच्छा हैक है)।
elcuco

3
हार मत मानो !!
लेनार्ट रोलैंड

-2

मैं यह कोशिश कर रहा था (जो काम करता है, लेकिन बोझिल है)।

QString s;
s.setNum(n,base);
s = s.toUpper();
presision -= s.length();
while(presision>0){
    s.prepend('0');
    presision--;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.