C++ 11 có hai loại dữ liệu tích phân ký tự mới, char16_t
và char32_t
. Tôi muốn mô phỏng chúng cho trình biên dịch mà không có một loại riêng biệt để quá tải hoạt động I/O để xem chúng một ký tự thay vì giá trị số nguyên của chúng.mô phỏng đầy đủ các kiểu nội trang riêng biệt bị thiếu (cụ thể: char16_t và char32_t)
Đây là những yêu cầu:
- biệt (không
typedef
). - chính xác chiều rộng trên các hệ thống bình thường (ala uint16_t và uint32_t)
- C++ 11 tính năng khác được phép (xem dưới đây nỗ lực đầu tiên)
- Phải chơi đẹp với literals;
char16_t c16 = u"blabla unicode text blabla";
phải hoạt động. - nếu char16_t có thể được sử dụng trong toán tử toán học, rõ ràng điều này cũng cần phải hoạt động.
nỗ lực đầu tiên của tôi mà không ở bộ phận văn chương là một enum mạnh mẽ gõ:
enum char16_t : uint16_t;
này có nhược điểm khác là tốt, mà có lẽ có thể được giải quyết bằng cách cung cấp các nhà khai thác cần thiết bản thân mình (mà thực sự là tốt bởi tôi).
Hoàn toàn không rõ lý do tại sao bạn đang thử công cụ này hoặc bạn muốn sử dụng công cụ nào. "Lần thử đầu tiên" sử dụng C++ 11. Không có cách nào để có được Unicode literals từ một trình biên dịch không có hỗ trợ Unicode được bảo đảm, và không có cách nào để thao tác các chuỗi tại thời gian biên dịch mà không có trình biên dịch C++ 11 gần đây. – Potatoswatter