"<cuchar>"提供了什么,它记录在哪里?
What does `<cuchar>` provide, and where is it documented?
新的c++ 11标准提到了一个头文件<cuchar>
,大概是类似于C99的<uchar.h>
。
现在,我们知道c++ 11带来了专门为UTF16和UTF32设计的新字符类型和文字,但我不认为该语言实际上包含将(依赖于系统的)窄多字节编码转换为Unicode编码之一的函数。然而,我刚刚看到<cuchar>
的标题简介,提到mbrtoc16
/c16rtombr
和mbrtoc32
/c32rtombr
的功能似乎就是这样做的。
这些在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);
函数分别在多字节字符和UTF-16或UTF-32字符之间进行转换,类似于mbrtowc
。没有不可重入的版本,老实说,谁需要它们呢?
可能是我所知道的最好的文档是n1326,将TR19769添加到C标准库的建议[编辑:虽然看着它,R. Martinho Fernandes引用的N1010似乎几乎相同]。
相关文章:
- C++我需要了解在哪里使用指针和双指针
- 未定义的引用在哪里
- 谷歌测试中的期望值存储在哪里
- 尽管遵循了规则,内存泄漏在哪里
- 静态数据成员模板专用化的实例化点在哪里
- 这个模板在做什么?
- 在哪里放置我的函数?进入我的母语 Gui 还是进入我的演示者?
- 在哪里声明结构运算符重载
- C++ 中的自定义异常:在哪里定义它们?
- 常量参数存储在哪里 (C++)?
- 如何在 c++ 中确定一条指令(以字节为单位)在哪里结束,另一条指令从哪里开始?
- 这段代码的最后一行在做什么?
- 添加 DIV/0 异常处理。我做错了什么,但无法确定在哪里
- C++ - 函数中的局部指针变量具有什么类型的存储持续时间以及它们存储在哪里?
- 此(C )代码有什么问题吗?如果是这样,有人可以告诉我我在哪里出错
- VOID NTAPI是什么意思?在哪里可以找到它的参考资料
- 这里有什么概念在起作用,可以在哪里应用
- 如果我知道数据在哪里,我能知道什么关于数据,例如0xffffffff7fffd9d8与0x10019c1e0
- "<cuchar>"提供了什么,它记录在哪里?
- C++内存泄漏 - 我删除什么,在哪里删除