C ++ 1 char से string में कन्वर्ट होता है? [बन्द है]


121

मुझे केवल 1 कास्ट करने की आवश्यकता charहै string। इसके विपरीत तरीका बहुत सरल है str[0]

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

char c = 34;
string(1,c);
//this doesn't work, the string is always empty.

string s(c);
//also doesn't work.

boost::lexical_cast<string>((int)c);
//also doesn't work.

3
पुन: पेश नहीं कर सकता: coliru.stacked-crooked.com/...
क्रिस

10
क्या आपको लगता string(1, c)है कि काम नहीं करता है? ऐसा करने का यह सही तरीका है।
templatetypedef

1
आप कौन से कंपाइलर का उपयोग कर रहे हैं? कैसा माहौल? शायद यह आपके कंपाइलर के साथ एक बग है।
मौरिस रीव्स

libc ++ abi.dylib: एक अपवाद को समाप्त करने वाला कहा जाता है
21

3
@ weeo- त्रुटि शायद आपके कार्यक्रम में कहीं और है। कृपया एक स्व-निहित, प्रतिलिपि प्रस्तुत करने योग्य उदाहरण पोस्ट करें, जो एर्रो को प्रदर्शित करता है ताकि हम आपको यह पता लगाने में मदद कर सकें कि क्या गलत है।
टेम्प्लेटेटीफेड

जवाबों:


184

के सभी

std::string s(1, c); std::cout << s << std::endl;

तथा

std::cout << std::string(1, c) << std::endl;

तथा

std::string s; s.push_back(c); std::cout << s << std::endl;

मेरे लिए काम किया।


4
सबसे छोटा तरीका है: स्ट्रिंग s = "" + c;
डॉक्टरराम

17
@doctorram NO! 1. आपके द्वारा उपयोग किए जा रहे उद्धरण चिह्न अमान्य C ++ हैं; 2. भले ही आप का मतलब s = "" + cयह सिर्फ यूबी है क्योंकि इसका मतलब यह नहीं है कि "चरित्र के साथ खाली स्ट्रिंग को संक्षिप्त करें c", इसका मतलब है "सूचक एक खाली स्ट्रिंग की कुछ प्रति के लिए, के संख्यात्मक मान से उन्नत c(जो निश्चित रूप से आप क्या नहीं है चाहता था), 3. अगर आपका मतलब है s = ""s + c, यह अभी भी लंबे समय से है s{1, c}... (और आपको using std::literals;कहीं लिखना होगा ...
मस्सा

11
क्षमा करें, मेरा मतलब था: स्ट्रिंग एस = स्ट्रिंग () + 'ए';
डॉक्टरराम

1
मैं उस गलत टिप्पणी को दूर कर सकता हूं ...
जेक ओपीजे

10

मैंने ईमानदारी से सोचा था कि कास्टिंग विधि ठीक काम करेगी। चूंकि यह नहीं है आप स्ट्रिंग की कोशिश कर सकते हैं। एक उदाहरण नीचे है:

#include <sstream>
#include <string>
std::stringstream ss;
std::string target;
char mychar = 'a';
ss << mychar;
ss >> target;

2
मैं इस तथ्य को नहीं समझता कि यह विशेष स्ट्रिंग निर्माता काम नहीं कर रहा है, वास्तविक समस्या से इसका कोई लेना-देना नहीं है।
क्रिस

1
शायद सही है, लेकिन मुझे लगा कि मैं आसान जवाब पेश करूंगा: पी
मल्लेन

यह समाधान काम करता है, हालांकि स्ट्रिंगस्ट्रीम ( <sstream>) का उपयोग करना आवश्यक नहीं है क्योंकि यह परियोजना में पूरे पुस्तकालय को शामिल करेगा, संकलन प्रक्रिया को धीमा कर देगा। अपनी परियोजना के लिए अनावश्यक निर्भरता सहित से बचने की कोशिश करें।
क्रिस्टियन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.