সম্পর্কিত প্রশ্ন অনুসরণ করে , আমি 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"
একটি সারোগেট জোড়ায় এনকোড করে।