gpt4 book ai didi

c++ - `` 提供了什么,它记录在哪里?

转载 作者:IT老高 更新时间:2023-10-28 22:22:04 26 4
gpt4 key购买 nike

新的 C++11 标准提到了一个 header <cuchar> ,大概类似于 C99 的 <uchar.h> .

现在,我们知道 C++11 带来了 new character types and literals是专为 UTF16 和 UTF32 设计的,但我认为该语言实际上不会包含将(系统相关的)窄多字节编码转换为 Unicode 编码之一的函数。但是,我刚刚遇到了 <cuchar> 的标题概要。提到功能mbrtoc16/c16rtombrmbrtoc32/c32rtombr这似乎就是这样做的。

不幸的是,除了标题概要之外,标准对这些功能只字未提。这些函数在哪里定义,它们真正做了什么,我在哪里可以了解更多关于它们的信息?这是否意味着现在可以完全通过标准 C++ 使用正确的 Unicode,而无需任何额外的库?

最佳答案

这些在 WG21 paper from 2005 中有所描述但最终标准中没有描述。它们记录在 ISO/IEC 19769:2004(编程语言 C 的扩展以支持新的字符数据类型)(draft)中,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。没有不可重入的版本,老实说,谁需要它们?

关于c++ - `<cuchar>` 提供了什么,它记录在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7562609/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com