जितना अधिक मैं सी ++ लोकेल पहलुओं के साथ काम करता हूं, उतना ही मैं समझता हूं --- वे टूट जाते हैं।क्या सी ++ 0x में स्थानीयकरण समर्थन के कोई अपडेट हैं?
std::time_get
- साथstd::time_put
(के रूप में यह सी में strftime/strptime) सममित नहीं है और AM/PM अंकों के साथ समय की आसान पार्स अनुमति नहीं है।- I discovered हाल ही में सरल संख्या स्वरूपण कुछ स्थानीय स्थानों (जैसे
ru_RU.UTF-8
) के तहत गैरकानूनी यूटीएफ -8 उत्पन्न कर सकता है। std::ctype
यह मानना बहुत सरल है कि प्रति-चरित्र आधार पर ऊपरी/निचले स्तर पर किया जा सकता है (केस रूपांतरण वर्णों की संख्या बदल सकता है और यह संदर्भ निर्भर है)।std::collate
- संयोजन क्षमता (केस संवेदनशील या असंवेदनशील) का समर्थन नहीं करता है।- टाइम स्वरूपण में वैश्विक टाइमज़ोन से अलग टाइमज़ोन निर्दिष्ट करने का कोई तरीका नहीं है।
और भी बहुत कुछ ...
- किसी को भी जानता है कि क्या कोई भी परिवर्तन C++ 0x में मानक पहलुओं में उम्मीद कर रहे हैं करता है?
- क्या ऐसे बदलावों का महत्व लाने का कोई तरीका है?
धन्यवाद।
संपादित करें: मामले में स्पष्टीकरण लिंक सुलभ नहीं है:
std::numpunct
चार के रूप में हज़ार विभाजक परिभाषित करता है। तो जब यू + 2002 में विभाजक - विभिन्न प्रकार की जगह इसे यूटीएफ -8 में सिंगल चार के रूप में पुन: उत्पन्न नहीं किया जा सकता है लेकिन एकाधिक बाइट अनुक्रम के रूप में।
सी एपीआई struct lconv
में हजारों विभाजक को स्ट्रिंग के रूप में परिभाषित करता है और इस समस्या से पीड़ित नहीं होता है। इसलिए, जब आप यूटीएफ -8 लोकेल के साथ ASCII के बाहर विभाजक के साथ संख्याओं को प्रारूपित करने का प्रयास करते हैं, तो अवैध यूटीएफ -8 का उत्पादन होता है। imbued ru_RU.UTF-8
स्थान के साथ ostream
EDIT2::
एसटीडी करने के लिए इस बग लिखने 1234 पुन: पेश करने के लिए मैं मानता चाहिए कि POSIX सी स्थानीयकरण एपीआई अधिक सहज काम करता है:
- वहाँ strftime का उल्टा होता है - - strptime (strftime
std::time_put::put
के समान होता है) - ऊपर वर्णित बिंदु के कारण संख्या स्वरूपण के साथ कोई समस्या नहीं है।
हालांकि यह अभी भी perfecet होने के लिए है।
EDIT3: C++ 0x के बारे में नवीनतम नोटों के अनुसार मैं देख सकता हूँ कि std::time_get::get
- strptime
और std::time_put::put
के विपरीत के समान है।
आप भाग्यशाली प्रतीत होते हैं कि std :: locale बिल्कुल काम कर रहा है। मुझे कभी भी MingW के साथ कोई सफलता नहीं मिली है। – UncleBens
आपके उत्तर में एकमात्र लिंक टूटा हुआ है और करता है खुला नहीं है (यह आश्चर्यजनक नहीं है कि यह '.no-ip.info' है, मुझे लगता है, लेकिन जैसा कि यह सवाल का थोडा हिस्सा है, आप इसे कहीं और रखना चाहते हैं ताकि यह पहुंच योग्य हो)। –
मिंगव किसी लोकेल को स्वीकार नहीं करता है/POSIX। हालांकि, लिनक्स लोकेल समर्थन के तहत बहुत अच्छा है। बीटीडब्ल्यू सी लाइब्रेरी एपीआई बहुत साफ, बेहतर डिजाइन और आम तौर पर बहुत आसान काम करता है। लेकिन ... POSIX एपीआई प्रति प्रक्रिया केवल एक लोकेल की अनुमति देता है जो काफी सीमित है। – Artyom