C ++ में यूनिकोड प्रसंस्करण का सबसे अच्छा अभ्यास क्या है?
C ++ में यूनिकोड प्रसंस्करण का सबसे अच्छा अभ्यास क्या है?
जवाबों:
is_alphaजब तक कि वह परिभाषा नहीं है जो आप चाहते हैं।stringअगर आप सही होने के बारे में परवाह है, हमेशा इस बात के लिए अपने यूनिकोड पुस्तकालय का उपयोग करें।यदि आप पिछले C ++ मानकों के साथ पश्चगामी संगतता के बारे में परवाह नहीं करते हैं, तो वर्तमान C ++ 11 मानक ने यूनिकोड समर्थन में बनाया है: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2011 /n3242.pdf
तो C ++ में यूनिकोड प्रसंस्करण के लिए वास्तव में सबसे अच्छा अभ्यास इसके लिए निर्मित सुविधाओं का उपयोग करना होगा। यह हमेशा पुराने कोड आधार के साथ एक संभावना नहीं है, हालांकि वर्तमान में मानक इतना नया है।
EDIT: स्पष्ट करने के लिए, C ++ 11 में यूनिकोड के बारे में पता है कि इसे अब यूनिकोड शाब्दिक और यूनिकोड स्ट्रिंग्स का समर्थन प्राप्त है। हालांकि, मानक पुस्तकालय में यूनिकोड प्रसंस्करण और रूपांतरण के लिए सीमित समर्थन है । आपकी वर्तमान जरूरतों के लिए यह पर्याप्त हो सकता है। हालाँकि, यदि आपको अभी भारी मात्रा में भारी उठाने की आवश्यकता है, तो आपको अभी भी अधिक गहन प्रसंस्करण के लिए ICU जैसी किसी चीज़ का उपयोग करने की आवश्यकता हो सकती है । विभिन्न एन्कोडिंग के बीच पाठ रूपांतरण के लिए अधिक मजबूत समर्थन शामिल करने के लिए वर्तमान में कुछ प्रस्ताव हैं । मेरा अनुमान (और आशा) यह है कि यह अगली तकनीकी रिपोर्ट का हिस्सा होगा ।
हमारी कंपनी (और अन्य) मूल रूप से टैलिगेंट द्वारा विकसित यूनिकोड (ICU) लाइब्रेरी के लिए ओपन सोर्स इंटरनेशन कंपोनेंट्स का उपयोग करती हैं ।
यह तार, स्थान, रूपांतरण, दिनांक / समय, टकराव, रूपांतरण, एट को संभालता है। अल।
ICU यूजरगाइड के साथ शुरू करें
यहाँ विंडोज प्रोग्रामिंग के लिए एक चेकलिस्ट है:
को देखो सी में प्रकरण असंवेदनशील स्ट्रिंग तुलना ++
उस प्रश्न में यूनिकोड पर Microsoft दस्तावेज़ीकरण की एक कड़ी है: http://msdn.microsoft.com/en-us/library/cc194799.aspx
यदि आप उस लेख के बगल में MSDN पर बाएं हाथ के नेविगेशन पक्ष को देखते हैं, तो आपको यूनिकोड फ़ंक्शन से संबंधित बहुत सारी जानकारी मिलनी चाहिए। यह "एन्कोडिंग वर्ण" ( http://msdn.microsoft.com/en-us/library/cc194786.aspx ) पर एक अध्याय का हिस्सा है
इसके निम्नलिखित उपखंड हैं:
हालाँकि यह सभी के लिए सर्वोत्तम अभ्यास नहीं हो सकता है, यदि आप चाहें तो आप अपनी C ++ UNICODE दिनचर्या लिख सकते हैं!
मैंने अभी एक सप्ताह के अंत में इसे पूरा किया। मैंने बहुत कुछ सीखा, हालांकि मैं इसकी गारंटी नहीं देता कि यह 100% बग फ्री है, मैंने बहुत परीक्षण किया और यह सही ढंग से काम करता है।
मेरा कोड न्यू बीएसडी लाइसेंस के तहत है और यहां पाया जा सकता है:
http://code.google.com/p/netwidecc/downloads/list
इसे WSUCONV कहा जाता है और यह एक नमूना मुख्य () प्रोग्राम के साथ आता है जो UTF-8, UTF-16 और Standard ASCII के बीच परिवर्तित होता है। यदि आप मुख्य कोड को फेंक देते हैं, तो आपको UNICODE को पढ़ने / लिखने के लिए एक अच्छी लाइब्रेरी मिल गई है।
जैसा कि ऊपर कहा गया है कि एक बड़ी प्रणाली का उपयोग करते समय एक पुस्तकालय सबसे अच्छा शर्त है। हालाँकि कुछ बार आप अपनी स्वयं की चीज़ों को संभालना चाहते हैं (हो सकता है कि क्योंकि पुस्तकालय एक माइक्रो नियंत्रक पर कई संसाधनों का उपयोग करेगा)। इस मामले में आप एक साधारण पुस्तकालय चाहते हैं, जिसे आप उन चीजों के लिए बाहर रख सकते हैं, जिनकी आपको वास्तव में आवश्यकता है।
विलो श्लांगर का उदाहरण कोड एक अच्छा लगता है (अधिक विवरण के लिए उसका उत्तर देखें)।
मुझे एक और भी मिला जिसमें छोटा कोड है, लेकिन पूर्ण त्रुटि जांच का अभाव है और केवल UTF-8 को संभालता है, लेकिन भागों को बाहर निकालने के लिए सरल था।
यहां उन एम्बेडेड पुस्तकालयों की सूची दी गई है जो सभ्य लगते हैं।
यूनिकोड के लिए आईबीएम के अंतर्राष्ट्रीय घटकों का उपयोग करें
यूटीएफ -8 एवरीवन की सिफारिशों पर एक नजर
stringबाइनरी डेटा के रूप में व्यवहार नहीं कर रहे हैं ।