2010-11-22 7 views

उत्तर

14

std::wstringwchar_t का एक कंटेनर है। wchar_t का आकार निर्दिष्ट नहीं है- विंडोज कंपाइलर 16-बिट प्रकार का उपयोग करते हैं, यूनिक्स कंपाइलर 32-बिट प्रकार का उपयोग करते हैं।

UTF-16 16-बिट पूर्णांक के अनुक्रमों में यूनिकोड कोड बिंदुओं के एन्कोडिंग अनुक्रमों का एक तरीका है।

दृश्य स्टूडियो का उपयोग करना, यदि आप विस्तृत चरित्र शाब्दिक (जैसे L"Hello World") कि BMP के बाहर कोई वर्ण हो उपयोग करते हैं, आप UTF-16 के साथ खत्म हो जाएगा, लेकिन ज्यादातर दो अवधारणाओं से संबंधित नहीं हैं। यदि आप बीएमपी के बाहर के पात्रों का उपयोग करते हैं, तो std::wstring आपके लिए यूनिकोड कोड बिंदुओं में surrogate pairs का अनुवाद नहीं करेगा, भले ही wchar_t 16 बिट्स हो।

+0

क्या आपका मतलब है कि विंडोज ऑपरेटिंग सिस्टम में इस्तेमाल होने पर केवल गैर-बीएमपी यूनिकोड चरित्र के लिए stt :: wstring यूटीएफ -16 के समान है? – hkBattousai

+6

सं। Std :: wstring केवल पूर्णांक का एक कंटेनर है। कंटेनर का एन्कोडिंग पूरी तरह से आपके द्वारा कंटेनर में डाले गए डेटा पर निर्भर करता है। –

+1

+1: यूटीएफ से अपरिचित लोगों के लिए बीएमपी को परिभाषित करना बुद्धिमान हो सकता है। –

2

UTF-16 के 16-बाइट तत्वों में प्रतिनिधित्व पाठ की एक अवधारणा है, लेकिन एक वास्तविक शाब्दिक चरित्र तत्व एक से शामिल हो सकते हैं

std :: wstring सिर्फ इन तत्वों का एक संग्रह है, और एक वर्ग मुख्य रूप से है उनके भंडारण से संबंधित है।

wstring में तत्व, wchar_t कम से कम 16-बिट्स है लेकिन 32 बिट्स हो सकता है।

+0

क्या आप उदाहरण देकर अधिक विस्तार से समझा सकते हैं। उदाहरण के लिए चरित्र 'ए' std :: wstring जैसे "0x0041" में संग्रहीत है। यह यूटीएफ -16 प्रारूप में कैसे संग्रहीत किया जाता है? – hkBattousai

+7

16 - ** बाइट ** ?? वाह यह एक कट्टर चरित्र एन्कोडिंग – Inverse

+2

@ उलटा है: यही कारण है कि हर किसी को केवल ASCII का उपयोग करना चाहिए, स्मृति उपयोग पर इतना दुख नहीं होगा;) –

6

यूटीएफ -16 एक विशिष्ट यूनिकोड एन्कोडिंग है। std::wstring एक स्ट्रिंग कार्यान्वयन है जो wchar_t का उपयोग प्रत्येक चरित्र को संग्रहीत करने के लिए इसके अंतर्निहित प्रकार के रूप में करता है। (इसके विपरीत, नियमित std::stringchar का उपयोग करता है)।

wchar_t के साथ उपयोग किया जाने वाला एन्कोडिंग अनिवार्य रूप से यूटीएफ -16 होना आवश्यक नहीं है - उदाहरण के लिए यह यूटीएफ -32 भी हो सकता है।

+2

यह यूसीएस -2 या एस-जेआईएस या बिग 5 या ... अच्छी तरह से कुछ भी हो सकता है। – greyfade