2009-06-15 14 views
6

में तारों की Arrays मैं प्रबंधित सी ++ में एक एप्लिकेशन लिखने की कोशिश कर रहा हूं, लेकिन मैं स्ट्रिंग्स की सरणी घोषित करने के तरीके को कैसे काम नहीं कर सकता।प्रबंधित सी ++

स्ट्रिंग^लिनेट [];

एक त्रुटि

'सिस्टम :: स्ट्रिंग ^' फेंकता है: एक देशी सरणी इस कामयाब प्रकार

तो मैं वहाँ से प्रबंधित डेटा के लिए यह करने के लिए एक अलग तरह है लगता नहीं हो सकते प्रकार के। यह वास्तव में क्या है

+0

बस एक छोटे nitpick: सी ++ और C++/CLI प्रबंधित जबकि मेरे ज्ञान के लिए होगा एक ही कोड में संकलित किया, वे वास्तव में दो अलग-अलग भाषाओं कर रहे हैं। –

उत्तर

7

क्या आपका वास्तव में प्रबंधित सी ++ का मतलब है? सी ++/सीएलआई नहीं है?

आप वास्तव में C++/CLI का उपयोग कर रहे (त्रुटि आपने जो संदेश पोस्ट की वजह से) मानते हुए, यह करने के लिए दो तरीके हैं:

एक प्रबंधित सरणी पैदा करेगा स्ट्रिंग के रूप में एक ही प्रकार यानी, [] सी # में।

gcroot<String^>[] unmanagedArray; 

एक अप्रबंधित सी ++ सरणी पैदा करेगा (मैं वास्तव में इस सरणियों के साथ की कोशिश की कभी नहीं किया है - यह STL कंटेनर के साथ अच्छी तरह से काम, तो यह यहां भी काम करना चाहिए)।

+1

स्ट्रिंग-> स्प्लिट() (स्ट्रिंग संस्करण की सरणी) को कॉल करते समय यह कैसे काम करता है? –

+0

@ user645280 - सरणी ^sa = str-> विभाजन (gcnew array {"one", "two"}, स्ट्रिंगस्प्लिटऑप्शन :: कोई नहीं); स्पिट स्ट्रिंग का उपयोग करते समय आपको स्ट्रिंगस्प्लिटऑप्शन निर्दिष्ट करने की आवश्यकता है। – erict

4

http://www.codeproject.com/KB/mcpp/cppcliarrays.aspx

बस इतना ही अपनी आवश्यकता के उत्तर :)

जब प्रबंधित C के साथ काम करने ++ होना चाहिए (उर्फ। C++/CLI उर्फ। सी ++/CLR) तुम सब कुछ में अपने चर प्रकार विचार करने की जरूरत आप कर। कोई भी "प्रबंधित" प्रकार (मूल रूप से, सिस्टम :: ऑब्जेक्ट से प्राप्त होने वाली सभी चीज़ों का उपयोग केवल प्रबंधित संदर्भ में किया जा सकता है। एक मानक सी ++ सरणी मूल रूप से ढेर पर एक निश्चित आकार मेमोरी-ब्लॉक बनाता है, आकार (प्रकार) x NumberOfItems बाइट्स के साथ, और फिर इसके माध्यम से पुनरावृत्त करता है। एक प्रबंधित प्रकार को ढेर पर उसी स्थान पर रहने के लिए गारेन नहीं किया जा सकता है क्योंकि मूल रूप से यह था, इसलिए आप ऐसा नहीं कर सकते हैं :)

+0

बस थोड़ा सा नाइटपिक: जबकि प्रबंधित सी ++ और सी ++/सीएलआई मेरे ज्ञान को उसी कोड में संकलित किया जाएगा, वे वास्तव में दो अलग-अलग भाषाएं हैं। –

+0

https://en.wikipedia.org/wiki/Managed_Extensions_for_C%2B%2B से ... "इन नए एक्सटेंशन को सी ++/सीएलआई नामित किया गया था और माइक्रोसॉफ्ट विजुअल स्टूडियो 2005 में शामिल किया गया था। [1] प्रबंधित सी ++ शब्द और एक्सटेंशन इस प्रकार संदर्भित किया जाता है कि नए एक्सटेंशन द्वारा बहिष्कृत और हटा दिया जाता है .... "- तो हाँ, आप बिल्कुल सही हैं। – cwap

+0

मैंने केवल इसका उल्लेख किया क्योंकि प्रबंधित सी ++ हैंडल का उपयोग नहीं करता है (प्रबंधित पॉइंटर्स, जिसे 'टाइप ^' के रूप में घोषित किया गया है), लेकिन सी ++/सीएलआई करता है। ... अब जब मैं इसके बारे में सोचता हूं, तो जिस व्यक्ति ने सवाल पूछा वह दो मिश्रित भी हो गया। –

1

आप .NET से संग्रह कक्षा का उपयोग करते हैं। example के लिए:

List<String^>^ dinosaurs = gcnew List<String^>(); 
संबंधित मुद्दे