2013-02-10 28 views
5

सी # में उपयोग करते हुए मैं यह कर सकता है:सरणी प्रारंभ जब नए

char[] a = new char[] {'a', 'a', 'a'}; 

लेकिन मुझे लगता है कि सी ++ में की तरह कुछ कर सकते हैं? मैंने कोशिश की:

char *a = new char [] {'a', 'a', 'a'}; 

लेकिन यह संकलित नहीं करता है।

+1

'char a [] = {' a ',' a ' , 'ए'}; '। बहुत आसान! –

+1

आकार निर्दिष्ट करें: 'char * a = new char [3] {'a', 'a', 'a'};' – jrok

उत्तर

6

यह सी ++ स्पेक में एक बग है (जो संकलन के लिए यह सरल निर्माण नहीं करता है)। आपको आकार

char *a = new char [3] {'a', 'a', 'a'}; 

http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#1469 देखें। ध्यान दें कि यदि आप टाइप नाम को संश्लेषित करते हैं तो यह टाइप-आईडी है और नया-प्रकार-आईडी नहीं है और इसलिए वाक्य रचनात्मक रूप से आप आकार अभिव्यक्ति को छोड़ने की अनुमति देते हैं। तो तुम एक कार्यान्वयन है कि आप कहना

char *a = new (char[]){'a', 'a', 'a'}; 

हालांकि यह स्पष्ट है कि यह स्पष्ट मंशा है कि यह संभव है (और new पैराग्राफ में कुछ नियम ना करे के लिए व्याख्या की जा सकती नहीं था की अनुमति देता है खोजने के लिए सक्षम हो सकता है यह)।

+1

मुझे नहीं लगता कि 'नया' यहां बिल्कुल इस्तेमाल किया जाना चाहिए। ढेर या कंटेनर का प्रयोग करें। – Inverse

+0

@ इसके विपरीत आपको टिप्पणी के रूप में प्रश्न में जोड़ना चाहिए। मैं अपने जवाब में कुछ भी सिफारिश नहीं करता हूं। मैंने बस अपना वाक्यविन्यास तय किया। –

+0

स्टैक सरणी या वैक्टर के बारे में बात करने वाले सभी उत्तरों वास्तव में नए के वाक्यविन्यास के बारे में अपने प्रश्न का उत्तर नहीं देते हैं। –

3

मुझे लगता है कि क्या आप चाहते हैं यह है:

const char a[] = {'a', 'a', 'a'}; 
6

क्यों सिर्फ ऐसा नहीं? :

char a[] = {'a', 'a', 'a'}; 

भी पूरी तरह से सरणी का उपयोग करने से बचें। std::vector

+0

'std :: vector' के लिए प्रारंभकर्ताओं पर कुछ जोड़ना बहुत अच्छा होगा, जैसे " यदि आप भाग्यशाली हैं कि एक संकलक सी ++ 11 का समर्थन करने के लिए पर्याप्त है, तो आप ऐसा कर सकते हैं। " –

+0

@ एंटोनकोवलेंको मैं सी ++ 11 पर चालू नहीं हूं, मेरा ध्यान सी # में स्थानांतरित हो गया है। लेकिन अगर आप उत्तर में कुछ जोड़ना चाहते हैं तो मुझे कोई फर्क नहीं पड़ता :-) –

1

हाँ, आप इसे पसंद कर सकते हैं;

char a[] = {'a', 'a', 'a'}; 

से बाहर Arrays (C++) चेक MSDN

4

शायद आप सी ++ में किसी सरणी का उपयोग नहीं करना चाहते हैं। इसके बजाय std::vector का उपयोग करें।

आप इसे 3 'ए के लिए भी शुरू कर सकते हैं।

std::vector<char> vectorOfChars(3, 'a'); 

अपने संकलक सी ++ 11 का समर्थन करता है, तो आप भी एक initialiser सूची का उपयोग कर सकते हैं।

std::vector<char> vectorOfChars{'a', 'a', 'a'}; 
0

स्ट्रिंग ए = "aaa"; एक [0], एक [1] ..etc यदि आप स्ट्रिंग के 2-डी सरणी बनाना चाहते हैं तो यह बहुत आसान होगा ..etc