2012-11-22 32 views
6

आज मैं कुछ सी ++ मूल बातें सीख रहा था और wchar_t के बारे में पता चला। मैं इसे समझने में सक्षम नहीं था, हमें वास्तव में इस डेटाटाइप की आवश्यकता होगी?सामान्य प्रोग्रामिंग में wchar_t के उपयोग का उपयोग क्या है?

+1

इसका उपयोग तब किया जाता है जब 'char' पर्याप्त नहीं है, उदाहरण के लिए यूनिकोड वर्ण और स्ट्रिंग का उपयोग करते समय। –

+1

यदि आप अपने कार्यक्रम में संस्कृत पात्रों के साथ काम करना चाहते हैं, तो उदाहरण के लिए –

+4

[कुछ लोग] (http://utf8everywhere.org/) सोचते हैं कि आपको इसका उपयोग नहीं करना चाहिए। – Ian

उत्तर

10

wchar_tनिश्चित-चौड़ाई, मल्टी-बाइट एन्कोडिंग में पाठ का प्रतिनिधित्व करने के लिए है; चूंकि wchar_t आमतौर पर 2 बाइट आकार में होता है, इसका उपयोग किसी भी 2-बाइट एन्कोडिंग में टेक्स्ट का प्रतिनिधित्व करने के लिए किया जा सकता है। इसका उपयोग परिवर्तनीय-चौड़ाई बहु-बाइट एन्कोडिंग में टेक्स्ट का प्रतिनिधित्व करने के लिए भी किया जा सकता है, जिसमें सबसे आम यूटीएफ -16 है।

प्लेटफार्मों जहां wchar_t यह यूसीएस -4 (यूनिकोड), का उपयोग कर किसी भी पाठ का प्रतिनिधित्व करने के लिए किया जा सकता आकार 4 बाइट्स पर लेकिन यह केवल एक चर-चौड़ाई एन्कोडिंग में यूनिकोड प्रतिनिधित्व कर सकते हैं के बाद से सबसे प्लेटफार्मों पर यह केवल 2 बाइट्स है (आमतौर पर यूटीएफ -16)। एक चर-चौड़ाई एन्कोडिंग के साथ char का उपयोग करना अधिक आम है। यूटीएफ -8 या जीबी 18030.

wchar_t का उपयोग करने के लिए एकमात्र आधुनिक ऑपरेटिंग सिस्टम के बारे में विंडोज़ है; ऐसा इसलिए है क्योंकि विंडोज ने यूनिकोड को यू + एफएफएफएफ से पहले बढ़ाया था और इसलिए एक निश्चित चौड़ाई 2-बाइट एन्कोडिंग (यूसीएस -2) समझदार दिखाई दे रही थी। अब यूसीएस -2 पूरे यूनिकोड का प्रतिनिधित्व करने के लिए अपर्याप्त है और इसलिए विंडोज यूटीएफ -16 का उपयोग करता है, फिर भी wchar_t 2-बाइट कोड इकाइयों के साथ।

3

wchar_t एक विस्तृत चरित्र है। इसका उपयोग उन वर्णों का प्रतिनिधित्व करने के लिए किया जाता है जिन्हें नियमित char से अधिक प्रतिनिधित्व करने के लिए अधिक स्मृति की आवश्यकता होती है। उदाहरण के लिए, विंडोज एपीआई में व्यापक रूप से उपयोग किया जाता है।

हालांकि, wchar_t का आकार कार्यान्वयन-निर्भर है और char से बड़ा होने की गारंटी नहीं है। यदि आपको 8 बिट्स से अधिक वर्ण प्रारूप के विशिष्ट रूप का समर्थन करने की आवश्यकता है, तो आप char32_t और char16_t पर क्रमशः 32 और 16 बिट्स की गारंटी दे सकते हैं।

1

wchar_t प्रकार का विस्तार विस्तारित वर्ण सेट के वर्णों के लिए किया जाता है। यह wstring के साथ उपयोग किए जाने वाले अन्य उपयोगों में से एक है जो एक स्ट्रिंग है जो विस्तारित चरित्र सेट के एकल वर्ण रख सकती है, स्ट्रिंग के विपरीत जो आकार चार के एकल वर्ण रख सकती है, या एक से अधिक वर्ण का उपयोग एक संकेत का प्रतिनिधित्व करने के लिए कर सकती है (जैसे utf8)।

wchar_t आकार लोकेशंस पर निर्भर है, और मानक द्वारा स्थानीय लोगों द्वारा समर्थित सबसे बड़े विस्तारित चरित्र सेट के सभी सदस्यों का प्रतिनिधित्व करने में सक्षम होने के लिए कहा जाता है।

3

wchar_t डेटा प्रकार wide characters that will occupy 16 bits प्रदर्शित करने के लिए उपयोग किया जाता है। यह डेटाटाइप "2 या 4" बाइट्स पर कब्जा करता है।

अधिकतर wchar_t डेटाटाइप का उपयोग तब किया जाता है जब जापानी जैसी अंतरराष्ट्रीय भाषाओं का उपयोग किया जाता है।

3

wchar_t का उपयोग तब किया जाता है जब आपको 255 से अधिक कोड वाले अक्षरों को स्टोर करने की आवश्यकता होती है (इसमें char स्टोर से अधिक मूल्य हो सकता है)।

char आईएसओ लैटिन टेबल में प्रविष्टियों के अनुरूप 256 अलग-अलग मान ले सकते हैं। दूसरी तरफ, विस्तृत चार 65536 से अधिक मूल्य ले सकता है जो यूनिकोड मानों से मेल खाता है। यह एक हालिया अंतरराष्ट्रीय मानक है जो लगभग सभी भाषाओं और आमतौर पर उपयोग किए जाने वाले प्रतीकों के लिए अक्षरों के एन्कोडिंग की अनुमति देता है।

+0

ASCII केवल 7 बिट चौड़ा है, और 127 से ऊपर वर्ण ASCII से संबंधित नहीं हैं। यूनिकोड में 65536 से अधिक वर्ण हैं, और 'sizeof (wchar_t) 'कई प्लेटफ़ॉर्म पर 2 से अधिक है। मैंने आपकी पोस्ट को सही कर दिया है। – clemens

+0

हाँ मैं आपको प्राप्त करता हूं, बहुत बहुत धन्यवाद। –

संबंधित मुद्दे