81

मुझे पता है कि यह एक आम मुद्दा है, लेकिन संदर्भों और अन्य सामग्री की तलाश में मुझे इस प्रश्न का स्पष्ट उत्तर नहीं मिला है।तारों को जोड़ना अपेक्षित काम नहीं करता

#include <string> 

// ... 
// in a method 
std::string a = "Hello "; 
std::string b = "World"; 
std::string c = a + b; 

संकलक मुझसे कहता है यह char[dim] के लिए एक अतिभारित ऑपरेटर नहीं मिल सकता है:

निम्नलिखित कोड पर विचार करें।

क्या इसका मतलब यह है कि स्ट्रिंग में कोई + ऑपरेटर नहीं है?

लेकिन कई उदाहरणों में इस तरह की स्थिति है। यदि यह अधिक तारों को सम्मिलित करने का सही तरीका नहीं है, तो सबसे अच्छा तरीका क्या है?

+15

आपका कोड ठीक संकलन चाहिए, जिसका अर्थ है आप नहीं कर रहे हैं त्रुटि का कारण बनने वाला सटीक कोड दिखा रहा है (सटीक त्रुटि संदेश पोस्ट न करने के शीर्ष पर)। – sbi

+0

वैसे यह काम नहीं करता है ... शायद मेरी गलती यह है कि मैंने कंपाइलर प्रदान नहीं किया है ... यह g ++ vc नहीं है ... :) – Andry

उत्तर

150

आपका कोड, जैसा लिखा है, काम करता है। आप शायद कुछ असंबंधित प्राप्त करने के लिए कोशिश कर रहे हैं, लेकिन इसी तरह:

std::string c = "hello" + "world"; 

यह सी के लिए क्योंकि काम नहीं करता ++ इस लगता है कि आप की तरह दो char संकेत जोड़ने की कोशिश कर रहे हैं। इसके बजाय, को की char* अक्षरों में से कम से कम std::string में कनवर्ट करने की आवश्यकता है। या तो आप क्या आप पहले से ही सवाल में पोस्ट किया है (जैसा कि मैंने कहा, इस कोड होगा काम) कर सकते हैं या आप निम्न कार्य करें:

std::string c = std::string("hello") + "world"; 
+0

हां, मैं इसे आजमाउंगा ... – Andry

+0

बहुत बहुत धन्यवाद ... ठीक है यह काम करता है ... मुझे उम्मीद है कि यह समस्या थी ... लेकिन वास्तव में .... एक अच्छी तरह से प्रदान किया गया ऑपरेटर कंसट करने के लिए नहीं है दो तार (मेरा मतलब है दो char *) ????? यह वास्तव में अजीब है ... क्या कोई कारण है कि मानक पुस्तकालय ऐसी साधारण चीज़ का समर्थन नहीं करते हैं (मुझे लगता है कि एक होना चाहिए)। – Andry

+3

char * एक सूचक है, और इसे आसानी से जोड़ा नहीं जा सकता क्योंकि इसे स्मृति के आवंटन की आवश्यकता होती है। std :: तार आवंटन छुपाएं, यही कारण है कि उनके लिए एक ऑपरेटर + प्रदान करना संभव है। –

46
std::string a = "Hello "; 
a += "World"; 
+2

अगर मैं ऊपर छोड़ दिया था तो +1 होगा! – jwueller

+0

क्षमा करें इसकी सी ++ नहीं सी # i + = यहां काम नहीं करती है, जिसके लिए इसका उपयोग – Pratik

+17

@Pratik [आपको यकीन है?] (Http://en.cppreference.com/w/cpp/string/basic_string/operator%2B % 3 डी) – Fraser

5

मैं यह कर जाएगा:

std::string a("Hello "); 
std::string b("World"); 
std::string c = a + b; 

कौन सा में VS2008 संकलित करता है।

+0

क्षमा करें ... मैं जी ++ नहीं वीसी ... – Andry

+1

भी जीसीसी में काम करना चाहिए। –

5
std::string a = "Hello "; 
std::string b = "World "; 
std::string c = a; 
c.append(b); 
संबंधित मुद्दे