2012-03-29 9 views
7

सी ++ में, मैं सेट कर सकते हैं इस तरह वर्तमान स्थान:वैश्विक वातावरण है कि वर्तमान में सी ++ में स्थापित किया जाएगा प्राप्त करें?

std::locale::global(std::locale(name)) 

लेकिन मैं मौजूदा वैश्विक वातावरण कैसे प्राप्त कर सकते हैं?

मेरे कोड में, मैं, वर्तमान स्थान प्राप्त एक tmp वर में सहेजने के लिए की जरूरत है, कुछ और, उत्पादन कुछ करने के लिए वैश्विक वातावरण सेट फिर इसे वापस पिछले स्थान के लिए निर्धारित किया है।

+0

इसका उपयोग नहीं किया है, लेकिन यह आप के बाद क्या है? http://en.cppreference.com/w/cpp/io/ios_base/getloc संपादित करें: कभी भी ध्यान न दें, मैंने पाया कि वापसी मूल्य वर्तमान लोकेल है। कॉर्बिन का जवाब देखें। – chris

+0

क्या आप वैश्विक लोकेल ("सी" 'के लिए डिफ़ॉल्ट), या पर्यावरण के लोकेल चाहते हैं? –

+0

मैं 'std :: locale :: global' का उपयोग करने से पहले जो भी सेट करता हूं उसका मूल्य चाहता हूं। – Frank

उत्तर

14

यदि आप std::locale के डिफ़ॉल्ट निर्माता को कॉल करते हैं, तो आपको यह मिलता है।

std::locale the_global_locale; // <-- automatically correct to std::locale::global 
           //  or a copy of std::locale::classic 

अधिक यहाँ जानकारी: http://en.cppreference.com/w/cpp/locale/locale/locale

5

इसकी वापसी मान, पुराने स्थान है तो बस का उपयोग करें।

locale l = locale::global(locale(name)); 
//do some stuff here 
locale::global(l); 

संपादित करें: संभावित रूप से उपयोगी: http://en.cppreference.com/w/cpp/locale/locale/global

2

आईपीसी कहते हैं, std :: स्थान के लिए डिफ़ॉल्ट निर्माता आप मौजूदा वैश्विक वातावरण की एक प्रति देता है, लेकिन क्यों आप कैश और उसके बाद की जरूरत है रीसेट वैश्विक वातावरण?

सी ++ दिनचर्या जो लोकेल का उपयोग करती हैं, आमतौर पर आपके द्वारा निर्दिष्ट सी ++ लोकेल ऑब्जेक्ट का उपयोग कर सकती हैं, इसलिए आपको वैश्विक लोकेल के साथ गड़बड़ नहीं करना पड़ेगा। सी ++ वैश्विक लोकेल का उपयोग करने के लिए लोकेल ऑब्जेक्ट्स का उपयोग करना पसंद किया जाना चाहिए।

संबंधित मुद्दे

 संबंधित मुद्दे