2010-07-09 11 views

उत्तर

495

उपयोग QString::number():

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

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

+0

तो शायद आप प्री-आवंटित बफर पर काम करना चाहते हैं ... लेकिन यह एक अलग प्रश्न की तरह लगता है। –

8

यह सरलतम रूप है में, जोर्ज Fritzsche

के जवाब का उपयोग एक सा उन्नत के लिए, आप इसका उपयोग कर सकते

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

जाओ प्रलेखन और एक उदाहरण here ..

+0

दुर्भाग्यवश, नोकिया साइट का लिंक अब काम नहीं करता है। –

96

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

// 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); 
+0

चूंकि आप '+' ऑपरेटर का उल्लेख करते हैं, पूर्णांक के चारों ओर सावधान रहें, क्योंकि यह बहुत अच्छी तरह से काम कर सकता है लेकिन आंतरिक रूप से, 'ऑपरेटर + (कॉन्स क्यूस्ट्रिंग एंड एस, चार सी) 'कार्यान्वयन कहा जाता है, और स्ट्रिंग में संख्या के रूप में पूर्णांक नहीं होता है लेकिन इसकी 'QChar :: एएससीआई (सी)' समतुल्य – x29a

+1

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

10

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

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

setNum() कई तरीकों से अधिभारित है। QString कक्षा संदर्भ देखें। ,

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

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

क्योंकि ऑपरेटर <<() अतिभारित कर दिया गया है, आप कई प्रकार के लिए उपयोग कर सकते हैं:

12

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

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

16

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

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

'QVariant' rulez! –

+0

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

-1

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

कर सकते हैं:

QVariant(3).toString(); 

एक float एक string या एक नाव के लिए एक string को

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