2011-10-11 13 views
8

सी में 'चार' से अमान्य रूपांतरण ++ मैं इस कार्यक्रम हैसी ++, करने के लिए 'स्थिरांक चार *'

prog.cpp:15: error: invalid conversion from ‘char’ to ‘const char*’ 

prog.cpp:15: error: initializing argument 2 of 
‘std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, 
_Traits, _Alloc>::insert(typename _Alloc::rebind<_CharT>::other::size_type, 
const _CharT*) [with _CharT = char, _Traits = std::char_traits<char>, 
_Alloc = std::allocator<char>]’ 

मैं कहां से परिवर्तित कर रहा हूँ कर रहा हूँ char से const char* से? क्या मैं एक स्ट्रिंग की स्थिति 0 पर कोई अक्षर नहीं डाल सकता?

उत्तर

10

त्रुटि संदेश आपको जो कुछ जानने की आवश्यकता है उसे बताता है - आप char पैरामीटर पास करने का प्रयास कर रहे हैं जहां const char * आवश्यक है।

expression_input.insert(0,'('); 
expression_input.append(')'); 

लिए:

expression_input.insert(0,"("); 
expression_input.append(")"); 
4

कोई std::string::insert कि केवल एक स्थिति है और एक चरित्र लेता है

तुम बस बदलने की जरूरत है। क्या आप चाहते हैं insert(0, 1, '(') है, जो स्थिति 0.

ही में 1 चरित्र सम्मिलित करता है std::string::append के लिए चला जाता है: append(1, ')')

0

स्ट्रिंग :: डालने समारोह का उपयोग कर रहे के संस्करण स्थिरांक चार की आवश्यकता है * यदि आप चार उपयोग में लगा रहे हैं "के बजाय 'की

यहां विधि दस्तावेज़

http://www.cplusplus.com/reference/string/string/insert/

+0

-1: आप निश्चित रूप से 'char' के साथ 'insert' का उपयोग कर सकते हैं। आपको बस इसके एक अलग अधिभार का उपयोग करना होगा। –

+0

मुझे लगता है कि मैं यह उल्लेख करने में असफल रहा कि यह स्ट्रिंग :: सम्मिलित फ़ंक्शन के लिए काम नहीं करता है जो उसके उपयोग के हस्ताक्षर का उपयोग करता है – minus

3

Now I don't get why does the compiler says I am converting from char to const char*.

के लिए एक लिंक है

आपके द्वारा संकलन त्रुटि प्राप्त करने का कारण यह है कि विधि के पारित तर्कों के सेट के लिए कोई मिलान अधिभार नहीं है। कंपाइलर निकटतम मैच ढूंढने का प्रयास करता है, जो आपके मामले में char और const char* है, और फिर उस त्रुटि की रिपोर्ट करता है।

Please help me out.

के लिए std::string::appendstd::string::insert और 6 भार के लिए 8 भार के हैं। आप इस तरह के रूप में कई अलग अलग विकल्प हैं:

expression_input.insert(0, "("); 
expression_input.append(")"); 

या

expression_input.insert(expression_input.begin(), '('); 
expression_input.append(")"); 

या यहाँ तक कि

expression_input.insert(0, 1, '('); 
expression_input.append(")"); 

वहाँ कई संभावनाएं है, बस एक है कि आप सबसे अधिक पठनीय या अपनी स्थिति के लिए sutiable खोजने के लिए चुनते हैं।

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