সম্পর্কিত প্রশ্ন অনুসরণ করে , আমি C ++ 11 এ নতুন চরিত্র এবং স্ট্রিং আক্ষরিক ধরণের সম্পর্কে জিজ্ঞাসা করতে চাই। দেখে মনে হচ্ছে আমাদের কাছে এখন চার ধরণের অক্ষর এবং পাঁচ ধরণের স্ট্রিং ল্যাটারাল রয়েছে। চরিত্রের প্রকারগুলি:
char a = '\x30'; // character, no semantics
wchar_t b = L'\xFFEF'; // wide character, no semantics
char16_t c = u'\u00F6'; // 16-bit, assumed UTF16?
char32_t d = U'\U0010FFFF'; // 32-bit, assumed UCS-4
এবং স্ট্রিং আক্ষরিক:
char A[] = "Hello\x0A"; // byte string, "narrow encoding"
wchar_t B[] = L"Hell\xF6\x0A"; // wide string, impl-def'd encoding
char16_t C[] = u"Hell\u00F6"; // (1)
char32_t D[] = U"Hell\U000000F6\U0010FFFF"; // (2)
auto E[] = u8"\u00F6\U0010FFFF"; // (3)
প্রশ্নটি হ'ল: \x/ \u/ \Uচরিত্রের রেফারেন্সগুলি কি সমস্ত স্ট্রিং প্রকারের সাথে অবাধে একত্রিতযোগ্য? সমস্ত স্ট্রিং প্রকারগুলি স্থির-প্রস্থ, অর্থাত্ অ্যারেগুলিতে আক্ষরিক হিসাবে উপস্থিত অনেকগুলি উপাদান রয়েছে বা \x/ \u/ \Uরেফারেন্সগুলিতে একটি চলক সংখ্যা বাইটে প্রসারিত হয়? কি u""এবং u8""স্ট্রিং শব্দার্থবিদ্যা এনকোডিং আছে, যেমন আমি বলতে পারি char16_t x[] = u"\U0010FFFF", এবং অ বিএমপি কোডপয়েন্ট দুই ইউনিট UTF16 ক্রম মধ্যে এনকোড পায়? এবং একইভাবে জন্য u8? (1) এ, আমি কি একা সারোগেট দিয়ে লিখতে পারি \u? পরিশেষে, এনকোডিংয়ের স্ট্রিং ফাংশনগুলির কোনও কি সচেতন (যেমন তারা অক্ষর-সচেতন এবং অবৈধ বাইট ক্রমগুলি সনাক্ত করতে পারে)?
এটি কিছুটা উন্মুক্ত সমাপ্ত প্রশ্ন, তবে আমি নতুন ইউটিএফ-এনকোডিং এবং নতুন সি ++ 11 টাইপ সুবিধাগুলির যথাসম্ভব সম্পূর্ণ চিত্র পেতে চাই।
u"\U0010FFFF"একটি সারোগেট জোড়ায় এনকোড করে।