c++ - Storing unicode UTF-8 string in std::string -
में चर्चा के जवाब में
मैं एक असाइन करने का प्रयास कर रहा / रही हूं हालांकि, जब मैं स्ट्रिंग दृश्य डीबगर को देखता हूं, I केवल देखो "?????" मेरे पास फाइल यूनिकोड (हस्ताक्षर के साथ यूटीएफ -8) के रूप में सहेजी गई है और मैं वर्ण सेट "यूनिकोड वर्ण सेट का उपयोग कर रहा हूँ" "" "एक नेपाली भाषा है और इसमें 5 अक्षर हैं और इसमें 15 बाइट्स होंगे। लेकिन दृश्य स्टूडियो डिबगर msg का आकार 5 के रूप में दिखाता है मेरा प्रश्न यह है: मैं इसे उपयोग करने के लिए बस यूटीएफ -8 को स्टोर करने के लिए std :: string का उपयोग कैसे करूं यदि आप सी +11 11 का प्रयोग कर रहे थे तो यह आसान होगा: लेकिन जब से आप नहीं हैं, तो आप एस्केप अनुक्रम का उपयोग कर सकते हैं और आपके लिए एन्कोडिंग प्रबंधित करने के लिए स्रोत फ़ाइल के वर्णसेट पर भरोसा नहीं कर सकते, इस तरह आपका कोड अधिक पोर्टेबल है (अगर आप गलती से सहेजते हैं इसे गैर-यूटीएफ 8 प्रारूप में): कोड> std :: string toUtf8 (const std :: wstring और str) {std :: string ret; Int len = वाइड-चेरटोमल्टीबाइट (सीपी_यूटीएफ 8, 0, स्ट्रै। सी।) (Str.Length (), शून्य, 0, शून्य, शून्य); अगर (लैन & gt; 0) {ret.resize (लेन); वाइड-चाइरटोमल्टीबाइट (सीपी_यूटीएफ 8, 0, स्ट्रॉस सीस्ट्रैक्ट), स्ट्रैथ (), एंड रिट [0], लेन, नाउल, नल); } वापसी रिटर्न; } UTF-8 स्ट्रिंग को
std :: string चर
Visual Studio 2010 पर्यावरण
std :: string msg = "निमंत्रण">
std :: string msg = u8 "मूवमेंट्स";
std :: string msg = "\ xE0 \ xA4 \ xAE \ xE0 \ xA4 \ xB9 \ xE0 \ xA4 \ xB8 \ xE0 \ xA5 \ x81" \ xE0 \ xA4 \ xB8 "; अन्यथा, आप इसके बजाय रनटाइम पर एक रूपांतरण करने पर विचार कर सकते हैं:
std :: string msg = toUtf8 (एल "मूवमेंट"););;
Comments
Post a Comment