सी ++ 11 में दो नए चरित्र अभिन्न डेटा प्रकार, char16_t
और char32_t
हैं। मैं उन्हें उन कंपाइलरों के लिए अनुकरण करना चाहता हूं जिनके पास I/O संचालन को अधिभारित करने के लिए एक अलग प्रकार नहीं है ताकि उन्हें उनके पूर्णांक मूल्य के बजाय वर्ण दिखाई दे सकें।पूरी तरह से गायब विशिष्ट बिल्टिन प्रकारों (विशेष रूप से: char16_t और char32_t)
ये आवश्यकताएँ हैं:
- अलग (कोई
typedef
)। - सामान्य सिस्टम (आला uint16_t और uint32_t)
- अन्य सी ++ 11 विशेषताएं (पहला प्रयास नीचे देखें)
- शाब्दिक साथ अच्छा खेलने अवश्य अनुमति दी जाती है पर सटीक-चौड़ाई;
char16_t c16 = u"blabla unicode text blabla";
काम करना चाहिए। - यदि गणित ऑपरेटरों में char16_t का उपयोग किया जा सकता है, तो जाहिर है कि इसे भी कार्य करने की आवश्यकता है।
मेरा पहला प्रयास है जो शाब्दिक विभाग में विफल रहता है एक जोरदार टाइप किया enum था:
enum char16_t : uint16_t;
यह रूप में अच्छी तरह अन्य कमियां हैं, कि शायद (जो वास्तव में है आवश्यक ऑपरेटरों अपने आप आपूर्ति द्वारा हल किया जा सकता है मेरी ओर से मंजूरी है)।
यह पूरी तरह अस्पष्ट है कि आप इसका प्रयास क्यों कर रहे हैं या आप किस टूल्स का उपयोग करना चाहते हैं। "पहला प्रयास" सी ++ 11 का उपयोग करता है। बिना किसी गारंटीकृत यूनिकोड समर्थन वाले एक कंपाइलर से यूनिकोड अक्षर प्राप्त करने का कोई तरीका नहीं है, और हाल ही में C++ 11 कंपाइलर, अवधि के बिना संकलन समय पर स्ट्रिंग में हेरफेर करने का कोई तरीका नहीं है। – Potatoswatter