C++ 11 giới thiệu một bộ tiền tố chuỗi ký tự mới (và thậm chí cho phép hậu tố do người dùng xác định). Ngày đầu này, bạn có thể trực tiếp sử dụng trình tự thoát Unicode để mã một biểu tượng nhất định mà không cần phải lo lắng về mã hóa.Unicode string literals
const char16_t* s16 = u"\u00DA";
const char32_t* s32 = U"\u00DA";
Nhưng tôi có thể sử dụng các chuỗi unicode thoát trong wchar_t
xâu không? Nó có vẻ là một khiếm khuyết nếu điều này là không thể.
const wchar_t* sw = L"\u00DA";
Giá trị số nguyên của sw[0]
sẽ tất nhiên phụ thuộc vào những gì wchar_t
là trên một nền tảng cụ thể, nhưng với tất cả các hiệu ứng khác, điều này sẽ được cầm tay, không?
Tôi tin rằng giá trị của 'sw [0]' phụ thuộc vào những gì 'wchar_t' là trên một nền tảng đặc biệt chỉ trong phạm vi của kích thước của 'wchar_t' là gì. I E. '\ u00DA' sẽ luôn dẫn đến một số mã hóa Unicode (UTF-8, UTF-16, UTF-32) của U + 00DA, ngay cả khi đó không phải là mã hóa bình thường của nền tảng cho loại đó. – bames53
Thực ra ở trên không chính xác. Việc thực hiện được coi là để xử lý các tên ký tự phổ quát vì nó sẽ là ký tự chữ. Vì vậy, nếu việc thực hiện dịch các ký tự trong một chuỗi ký tự thành bộ ký tự thực thi thì nó cũng nên làm như vậy với UCN. Bạn chỉ được đảm bảo mã hóa UTF nếu UCN ở trong một chữ unicode (ví dụ: u8 "\ u00DA"). – bames53