Theo chuẩn C++ (§30.7.5.2.4 của C++ 17 dự thảo (N4659)), out << ch
sẽ không thực hiện một hoạt động mở rộng trên ch
, nếu ch
là một char
và out
là một std::ostream
.C++ Vai trò của std :: ctype <char> :: widen() là gì?
Điều này ngụ ý rằng std::ctype<char>::widen()
(ví dụ: char
->char
) được đảm bảo theo tiêu chuẩn để trở thành một chức năng nhận dạng (widen(ch) == ch
) cho tất cả các nhân vật trong bộ ký tự cơ bản thiết lập?
Nếu vậy, điều này có nghĩa là tất cả các ngôn ngữ được yêu cầu theo tiêu chuẩn để sử dụng cùng một mã hóa không phải (hoặc đa byte) của các ký tự từ bộ ký tự nguồn cơ bản không?
Nếu không, có vẻ như out << 'x'
, với lựa chọn mã hóa ký tự đặc biệt cho chữ, có thể không hoạt động ở tất cả các ngôn ngữ, ngay cả khi nó hoạt động trong một số ngôn ngữ. Tức là, có thể không có sự lựa chọn mã hóa ký tự bằng chữ, chẳng hạn như out << 'x'
đồng thời hoạt động ở tất cả các miền.