Ker*_* SB 16 c++ unicode c++11
新的C++ 11标准提到了一个标题<cuchar>
,可能与C99类似<uchar.h>
.
现在,我们知道C++ 11带来了专门为UTF16和UTF32设计的新字符类型和文字,但我不认为该语言实际上会包含将(系统相关的)窄多字节编码转换为其中一个的函数. Unicode编码.但是,我刚刚遇到了<cuchar>
提及函数mbrtoc16
/ c16rtombr
和mbrtoc32
/ 的头文件概要c32rtombr
.
不幸的是,标准没有提到标题概要之外的那些功能.这些功能在哪里定义,他们真正做了什么,在哪里可以阅读更多关于它们的内容?这是否意味着现在可以使用标准C++完全使用适当的Unicode,而无需任何额外的库?
这些在2005年的WG21论文中有所描述,但最终标准中没有描述.它们在ISO/IEC 19769:2004(支持新字符数据类型的编程语言C的扩展)(草案)中有记录,C++ 11标准引用了这些内容.
文字太长了,无法在此发布,但这些是签名:
size_t mbrtoc16(char16_t * pc16, const char * s, size_t n, mbstate_t * ps);
size_t c16rtomb(char * s, char16_t c16, mbstate _t * ps);
size_t mbrtoc32(char32_t * pc32, const char * s, size_t n, mbstate_t * ps);
size_t c32rtomb(char * s, char32_t c32, mbstate_t * ps);
Run Code Online (Sandbox Code Playgroud)
这些函数分别在多字节字符和UTF-16或UTF-32字符之间进行转换,类似于mbrtowc
.没有非重入版本,老实说,谁需要它们?
归档时间: |
|
查看次数: |
1571 次 |
最近记录: |