मैं GetEnvironmentStrings()
का उपयोग कर Win32 में वातावरण चर को पुन: प्राप्त कर रहा हूँ। यह char*
देता है।पर्यावरण चर * एक चार में हैं कि कैसे एक एसटीडी करने के लिए इसे पाने के लिए :: स्ट्रिंग
मैं एक विशिष्ट पर्यावरणीय चर के लिए इस स्ट्रिंग (चार सूचक) को खोजना चाहता हूं (हाँ मुझे पता है कि मैं GetEnvironmentVariable()
का उपयोग कर सकता हूं लेकिन मैं इसे इस तरह से कर रहा हूं क्योंकि मैं भी कंसोल पर सभी पर्यावरण चर मुद्रित करना चाहता हूं - I बस चारों ओर झुकाव हूँ)।
तो मैं मैं एक एसटीडी के लिए char*
बदल जाएगा सोचा :: स्ट्रिंग & उपयोग उस पर लगता है (मैं जानता हूँ कि मैं भी एक c_string खोज समारोह का उपयोग कर सकते लेकिन मैं एक std::string
में एक char*
नक़ल करने की कोशिश के बारे में अधिक चिंतित हूँ)। लेकिन निम्नलिखित कोड std::string
में char*
के सभी कॉपी नहीं करने के लिए (यह मुझे लगता है कि वहाँ char*
लेकिन इसकी नहीं वास्तव में अंत में एक \0
चरित्र है बनाता है) लगता है।
char* a = GetEnvironmentStrings();
string b = string(a, sizeof(a));
printf("%s", b.c_str()); // prints =::=
वहाँ एक std::string
में एक char*
कॉपी करने के लिए एक रास्ता है (मैं जानता हूँ कि मैं strcpy()
का प्रयोग कर एक स्ट्रिंग में एक const char*
कॉपी करने के लिए कर सकते हैं, लेकिन नहीं एक char*
)।
कौन सा एफ * इसे सही डुप्लिकेट के रूप में बंद करने का प्रयास करता है? यह एक बिल्कुल अलग सवाल है! – Xeo
@Xeo: ठीक है, नहीं, यह नहीं है ... 'getenv'/'GetEnvironmentVariable' फ़ंक्शन का उपयोग अलग है लेकिन परिणाम वही है ... सभी ओपी को करने के लिए' getenv' कॉल को प्रतिस्थापित करना है 'GetEnvironmentVariable' कॉल करें। – rubenvb
@ रूबेनव: GetEnvironmentStrings() को छोड़कर एक डोडी प्रारूप देता है, जिसे OP को * विशिष्ट * सहायता की आवश्यकता होती है। आप 'Getenv' को' GetEnvironmentStrings() 'के साथ प्रतिस्थापित नहीं कर सकते हैं। – Puppy