std::copy
उपयोग कर सकते हैं यह कर, जैसा कि मैंने ऊपर टिप्पणी की की सी ++ तरह से, std::string
बजाय char[]
उपयोग करने के लिए किया जाएगा। यह आपको असाइनमेंट व्यवहार देगा जो आप उम्मीद कर रहे हैं।
कहा यही कारण है, कारण है कि आप केवल दूसरे मामले के लिए एक त्रुटि हो रही है कि इन दो पंक्तियों में =
अनेक अर्थ है:
char a[10] = "Hi";
a = "Hi";
पहले एक प्रारंभ है, दूसरा एक काम है ।
पहली पंक्ति 10 अक्षरों को रखने के लिए स्टैक पर पर्याप्त स्थान आवंटित करती है, और उन तीनों पात्रों को 'एच', 'मैं' और '\ 0' होने के लिए प्रारंभ करती है। इस बिंदु से, सभी a
स्टैक पर सरणी की स्थिति का संदर्भ देता है। क्योंकि सरणी स्टैक पर सिर्फ एक जगह है, a
को बदलने की अनुमति नहीं है। यदि आप एक अलग मूल्य रखने के लिए स्टैक पर एक अलग स्थान चाहते हैं, तो आपको एक अलग चर की आवश्यकता है।
दूसरी ओर, दूसरी (अमान्य) रेखा a
को "Hi"
के एक (तकनीकी रूप से अलग) incantation के संदर्भ में बदलने की कोशिश करती है। ऊपर बताए गए कारणों के लिए इसकी अनुमति नहीं है। एक बार आपके पास प्रारंभिक सरणी हो जाने के बाद, केवल एक चीज जो आप इसके साथ कर सकते हैं, उससे मूल्य पढ़ते हैं और इसके लिए मूल्य लिखते हैं। आप अपना स्थान या आकार नहीं बदल सकते हैं। इस मामले में एक असाइनमेंट करने का प्रयास किया जाएगा।
प्रतिक्रियाओं के लिए की कोई जरूरत नहीं लिखने के लिए कोई आवश्यकता नहीं है कि
की तरह अपने कोड लिख सकते हैं: इस टैग है के बाद से सी ++, है 'char []' से निपटने के दौरान ऐसा करने के लिए एक * non * -strcpy "अधिक C++" तरीका है? –
char "[] के बजाय स्ट्रिंग या वेक्टर का उपयोग करने के लिए" अधिक C++ तरीका "होगा। Char [] का उपयोग करके आप मूल रूप से सभी सी-नेस को स्वीकार कर रहे हैं जो इसके साथ जाता है। –
Cogwheel
आपके प्रतिक्रिया लोगों के लिए धन्यवाद। –