2011-08-10 17 views
8

मैं सी में कुछ इस तरह करना चाहते हैं ++ क्यूटी का उपयोग कर के साथ दो QStrings श्रृंखलाबद्ध:एक पूर्णांक

int i = 5; 
QString directory = ":/karim/pic" + i + ".jpg"; 

जहां + का मतलब है मैं तार और पूर्णांक श्रेणीबद्ध करने के लिए (जो है, directory:/karim/pic5.jpg होना चाहिए) चाहते हैं। मैं यह कैसे कर सकता हूँ?

+11

सी ++ CONCATENATE स्ट्रिंग और पूर्णांक http://stackoverflow.com/questions/191757/c-concatenate-string-and-int 8 तरीके के साथ एक जवाब वहाँ में यह करने के लिए है। – Vache

+0

टैग इंगित करते हैं कि वह 'qt' के लिए उत्तर चाहता है," डुप्लिकेट "में दिए गए उत्तरों इसे प्रदान नहीं करते हैं। –

+0

मेरे संपादन लोगों की जांच करें –

उत्तर

27

क्यूटी का मुहावरा QString की arg() कार्य है।

QString directory = QString(":/karim/pic%1.jpg").arg(i); 
+0

थोड़ा बेहतर है 'क्यूस्ट्रिंग लिटरल (":/करिम/तस्वीर% 1.jpg")। Arg (i);', जो संकलन समय पर उत्पन्न होता है। https://woboq.com/blog/qstringliteral.html – Robin

2
#include <sstream> 
#include <string> 

int i = 5; 

std::stringstream s; 
s << ":/karim/pic" << i << ".jpg"; 

std::string directory = s.str(); 
+1

मुझे लगता है कि यह 's.str()' है, 's.string()' –

+0

नहीं है, आप सही हैं, इसे सही किया है। –

+0

मेरे संपादन लड़कों की जांच करें –

11

(संपादित करें:। इस संपादित करें कि QString उल्लेख से पहले प्रश्न का उत्तर है QString के लिए, the newer answer देखें)

यह C++11 का उपयोग कर एक बहुत ही इसी तरह की एक लाइनर के रूप में किया जा सकता है:

int i = 5; 
std::string directory = ":/karim/pic" + std::to_string(i) + ".jpg"; 

टेस्ट: https://ideone.com/jIAxE

पुराने compilers के साथ

, यह Boost साथ प्रतिस्थापित किया जा सकता :

int i = 5; 
std::string directory = ":/karim/pic" + boost::lexical_cast<std::string>(i) + ".jpg"; 

टेस्ट: https://ideone.com/LFtt7

लेकिन यह एक स्ट्रिंग धारा वस्तु के साथ है करने के लिए बढ़िया तरीका।

int i = 5; 
std::ostringstream oss; 
oss << ":/karim/pic" << i << ".jpg"; 
std::string directory = oss.str(); 

टेस्ट: https://ideone.com/6QVPv

+0

दिलचस्प। मैं कभी नहीं जानता था, इस बार कि 'ऑपरेटर + (कॉन्स char *, const std :: string &)' के लिए ओवरलोड था, और इसलिए मुझे हमेशा अपने अक्षरों को स्ट्रिंग कन्स्ट्रक्टर में लपेटना होगा। –

+0

मेरे संपादन लोगों की जांच करें –

+0

@ करिम एम। एल टेल: ओह, चूंकि यह एक क्यूस्ट्रिंग (संपादन के बाद) है, हेक्सा की टिप्पणी के साथ जाएं। उम्मीद है कि इसे फिर से खोला जाएगा ताकि इसे एक उत्तर के रूप में पोस्ट किया जा सके। – Cubbi

2

stringstream पर एक नज़र डालें: इस जैसी चीजों के लिए

http://cplusplus.com/reference/iostream/stringstream/

ostringstream oss(ostringstream::out); 

oss << ":/karim/pic"; 
oss << i 
oss << ".jpg"; 

cout << oss.str(); 
+1

मुझे क्या शामिल करना चाहिए? –

+0

आपको शामिल करने की आवश्यकता है। –

+0

मेरे संपादन लोगों की जांच करें –

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