निम्नलिखित कोड लिनक्स पर ठीक काम करता है, लेकिन ओएस पर एक अपवाद X 10.7 फेंकता है:स्थापना स्थानों दुर्घटनाओं
#include <iostream>
#include <locale>
#include <stdexcept>
int main() try {
std::locale::global(std::locale(""));
std::cout << "Using locale: " << std::locale().name() << "\n";
}
catch (std::runtime_error const& e) {
std::cout << e.what() << "\n";
return 1;
}
ओएस एक्स पर उत्पादन किया जाता है:
locale::facet::_S_create_c_locale
नाम मान्य नहीं
हालांकि, मानक स्पष्ट रूप से कहा गया है कि
वैध स्ट्रिंग तर्क मानों का सेट
"C"
,""
, और कोई कार्यान्वयन-परिभाषित मान है।
तो जो भी ऊपर व्यवहार करता है वह मानक का उल्लंघन कर रहा है।
प्रयुक्त कंपाइलर क्लैंग ++ 3.1 (टैग/ऐप्पल/क्लैंग -318.0.58) है; मैंने उसी परिणाम के साथ होमब्री के माध्यम से स्थापित जीसीसी 4.7 के साथ भी कोशिश की है।
क्या अन्य लोग इस समस्या को मान्य कर सकते हैं? इसका क्या कारण होता है? क्या मैं गलत हूं? क्या यह ओएस एक्स में एक बग है?
(हो सकता है कि इस relates to another xlocale
problem लेकिन त्रुटियों वास्तव में पूरी तरह से अलग कर रहे हैं।)
मुझे लगता है कि यह (लगभग) [लगभग प्रश्न] का एक डुप्लिकेट है (http://stackoverflow.com/questions/1745045/stdlocale-breakage-on-macos-10-6-with-lang-en-us- utf-8) ... –
@EitanT अच्छा लगता है, यह है (एक * सटीक * डुप्लिकेट)! धन्यवाद। –
मुझे नहीं लगता कि आप xlocale का उपयोग कर रहे हैं। मेरा मानना है कि आप libstdC++ के साथ समस्या है, जो एक अलग लोकेल समर्थन लाइब्रेरी का उपयोग करता है (जो ओएस एक्स पर स्पष्ट रूप से समर्थित नहीं है, जैसा सवाल राज्यों के लिए ईटनटी लिंक है)। मुझे लगता है कि अगर आप libC++ पर स्विच करते हैं तो आपका प्रोग्राम काम करेगा। हालांकि मेरे प्रश्न के विवरण के रूप में, xlocale में कीड़े की वजह से libC++ में कुछ लोकेशन के साथ समस्याएं हैं। – bames53