Int को QString में कैसे बदलें?


360

क्या कोई QStringफ़ंक्शन है जो एक इंट लेता है और इसे एक के रूप में आउटपुट करता है QString?

जवाबों:


656

उपयोग करें QString::number():

int i = 42;
QString s = QString::number(i);

2
यहां अधिक दिलचस्प सवाल है: क्या कोई तेज़ तरीका है? मुझे एक समस्या का सामना करना पड़ा है जहाँ इस संस्करण को बाद में संपूर्ण प्रसंस्करण की तुलना में लगभग अधिक समय लगता है ...
Zeks

तब आप शायद पूर्व-आवंटित बफ़र्स पर काम करना चाहते हैं ... लेकिन यह एक अलग सवाल लगता है।
जॉर्ज फ्रिट्ज़शे

122

और यदि आप इसे कुछ पाठ संदर्भ में स्ट्रिंग में रखना चाहते हैं, तो +ऑपरेटर के बारे में भूल जाएं । बस करो:

// Qt 5 + C++11
auto i = 13;    
auto printable = QStringLiteral("My magic number is %1. That's all!").arg(i);

// Qt 5
int i = 13;    
QString printable = QStringLiteral("My magic number is %1. That's all!").arg(i);

// Qt 4
int i = 13;    
QString printable = QString::fromLatin1("My magic number is %1. That's all!").arg(i);

2
जब से आप +ऑपरेटर का उल्लेख करते हैं, पूर्णांक के चारों ओर सावधान, क्योंकि यह बहुत अच्छी तरह से काम कर सकता है लेकिन आंतरिक रूप से, operator+(const QString &s, char c)कार्यान्वयन कहा जाता है, और स्ट्रिंग में पूर्णांक संख्या के रूप में नहीं होगा, लेकिन इसके QChar::fromAscii(c)समकक्ष
x29a

3
चूंकि आप + ऑपरेटर का उल्लेख करते हैं, आप वास्तव में इसे कर सकते हैं, लेकिन व्हाट्सएप को समझना: QString p = s + QString :: संख्या (1); सा QString होने के नाते पूरी तरह से काम करता है। तो, मूल रूप से QString + QString ठीक है, QString + int खराब
डेविड सेंचेज

28

इसके अलावा जो आप चाहते हैं उसे बदलने के लिए, आप उपयोग कर सकते हैं QVariant। एक के intलिए QStringआप पाने के लिए:

QVariant(3).toString();

A : floata stringया stringa float: a

QVariant(3.2).toString();
QVariant("5.2").toFloat();

1
QVariantrulez!
मि। कॉफ़ी

मुझे पागल बुलाओ, लेकिन मुझे सवाल का अधिक उपयोग करना होगा "कैसे एक नंबर को QString में कनवर्ट करना है?", यह हल्के रूपांतरण के लिए मुख्य उत्तर के रूप में, और विशेष उपचार के लिए अन्य उत्तर।
mr3

17

फिर भी एक और विकल्प क्यूटेक्स्ट्रीम और <<ऑपरेटर को उसी तरह से उपयोग करना है जैसे आप coutC ++ में उपयोग करेंगे :

QPoint point(5,1);
QString str;
QTextStream(&str) << "Mouse click: (" << point.x() << ", " << point.y() << ").";

// OUTPUT:
// Mouse click: (5, 1).

क्योंकि ऑपरेटर <<()को अधिभारित किया गया है, आप इसे कई प्रकारों के लिए उपयोग कर सकते हैं, न कि केवल intQString::arg()ओवरलोडेड है, उदाहरण के लिए arg(int a1, int a2), लेकिन कोई भी नहीं है arg(int a1, QString a2), इसलिए मिश्रित प्रकारों के साथ लंबे तारों को प्रारूपित करते समय उपयोग करना QTextStream()और ऑपरेटर <<सुविधाजनक है।

सावधानी:sprintf() सी शैली की नकल करने के लिए आपको सुविधा का उपयोग करने के लिए लुभाया जा सकता हैprintf() स्टेटमेंट की , लेकिन इसे यूनिकोड एस का समर्थन करने QTextStreamया उपयोग करने की सलाह दी जाती है ।arg()string


14

मैं हमेशा उपयोग करता हूं QString::setNum()

int i = 10;
double d = 10.75;
QString str;
str.setNum(i);
str.setNum(d);

setNum()कई मायनों में अतिभारित है। QStringवर्ग संदर्भ देखें ।


12

यह सबसे सरल रूप में, जॉर्ज फ्रिट्ज़ के जवाब का उपयोग करें

थोड़ा उन्नत के लिए, आप इसका उपयोग कर सकते हैं,

QString QString::arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const

प्रलेखन और एक उदाहरण यहाँ प्राप्त करें ..


दुर्भाग्य से, नोकिया साइट का लिंक अब काम नहीं करता है।
एलियाहू स्कुक्ज़िलस

3

पूर्णता के लिए, आप मानक पुस्तकालय का उपयोग कर सकते हैं और कर सकते हैं QString qstr = QString::fromStdString(std::to_string(42));


3

यदि आपको स्थानीय-जागरूक संख्या स्वरूपण की आवश्यकता है, तो इसके बजाय QLocale :: String का उपयोग करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.