2013-06-19 4 views
68

मैं वास्तव में किसी भी सवाल का जवाब है कि बंद नहीं मिला ...सी ++ 1 char से स्ट्रिंग में कनवर्ट करें?

विपरीत str की तरह बहुत सरल है [0]

लेकिन मैं स्ट्रिंग के लिए केवल 1 वर्ण कास्ट करने के लिए जरूरत है ...

इस तरह:

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 return null 
+3

पुन: पेश नहीं कर सकता: http://coliru.stacked-crooked.com/view?id=921396d51d6d0324bef7cc64062decc3-1dfa45f65786f4a26064bc85b3de325a – chris

+7

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

+0

आप किस संकलक का उपयोग कर रहे हैं? क्या पर्यावरण शायद यह आपके कंपाइलर के साथ एक बग है। –

उत्तर

115

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

और

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

और

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

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

+0

सबसे छोटा तरीका यह है: स्ट्रिंग एस = "" + सी; – doctorram

+0

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

+1

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

6

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

#include <sstream> 
#include <string> 
stringstream ss; 
string target; 
char mychar='a'; 
ss << mychar; 
ss >> target; 
+2

मुझे नहीं लगता कि यह विशेष स्ट्रिंग कन्स्ट्रक्टर काम नहीं कर रहा है, असली समस्या के साथ कुछ भी करना है। – chris

+1

शायद सही है, लेकिन सोचा कि मैं आसान जवाब प्रदान करता हूं: पी – Mallen

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