कैसे एक स्ट्रिंग इनिशियलाइज़ करने के लिए


जवाब 1:

सी ++ में, एसटीएल के साथ तार और सरणियों को संभालना बेहतर है। सरणियों के लिए, वेक्टर को डिफ़ॉल्ट कंटेनर (#include) के रूप में उपयोग करने पर विचार करें ), स्ट्रिंग के लिए, स्ट्रिंग लाइब्रेरी (#include) का उपयोग करना ) स्ट्रिंग की एक सरणी परिभाषित करने के लिए,

std :: वेक्टर foo = {"bar", "baz"}; यह STL कंटेनरों और C ++ स्ट्रिंग का उपयोग करके बहुत सारे पेटीएम को बचाता है।


यहाँ वास्तव में सी में क्या होता है। सी शैली में, सी स्ट्रिंग को परिभाषित करने के लिए, चार * एस = "बार"; C स्ट्रिंग की एक सरणी को परिभाषित करने के लिए, char * foo [] = {"bar", "baz"}; 2 डी सरणी के साथ सी स्ट्रिंग की एक सरणी को परिभाषित करने के लिए, चार फू [] [4] = {"बार", "बाज"}; // 3 क्यों नहीं? नोट 1: आरंभिक सूची के साथ किसी भी कई आयामी सरणी के लिए, पहले को छोड़कर सभी आयाम आकार निर्दिष्ट होने चाहिए। इसलिए, चार फू [] [] = {"बार", "बाज"}; // संकलन-समय त्रुटि। नोट 2: वर्णों की एक सरणी से C स्ट्रिंग को परिभाषित करते समय, सरणी आकार कम से कम स्ट्रिंग आकार से अधिक होना चाहिए। यह इसलिए है क्योंकि सी कंपाइलर को स्ट्रिंग के अंत के मार्कर के रूप में स्ट्रिंग के अंत में '\ 0' को जोड़ना होगा। यदि आप char foo [] [3] को परिभाषित करते हैं और foo [0] को एक्सेस करते हैं, तो आपको कम से कम "barbaz" या अधिक समय तक मेमोरी में '\ 0' तक पहुंचना होगा, जो कि वांछित नहीं हो सकता है (C कंपाइलर में)। C ++ कंपाइलर में, अधिकांश एक त्रुटि की रिपोर्ट करेगा। इसलिए, C स्ट्रिंग को अच्छी तरह से बनाए रखना काफी मुश्किल है और C ++ स्ट्रिंग इन सभी का ध्यान रखता है।

नमूना कोड यहां:

Ideone.com

जवाब 2:

यह वही है जो आप करना चाहते हैं?

#शामिल #शामिल नेमस्पेस एसटीडी का उपयोग करना;int main (int argc, char ** argv) { string foo [] = {"एक", "दो"}; cout << foo [1] << "" << foo [2]; वापसी 0;}

यह एक स्थिर सरणी की सामग्री को इनिशियलाइज़ और प्रदर्शित करेगा, गतिशील लोगों के लिए मैं आपको वैक्टर, सूची या स्टैक जैसे कंटेनरों का उपयोग करने का सुझाव देता हूं:

- कंटेनर - C ++ संदर्भ

जवाब 3:

स्टैटिकली, स्ट्रिंग सेंट [20];

गतिशील रूप से, स्ट्रिंग * st = नई स्ट्रिंग [20];

मनो श्रीराम