【发布时间】:2019-11-07 19:30:40
【问题描述】:
我正在使用 Microsoft Visual C++ 16.1(2019 社区)并尝试编写在 C++ 2020 中“正确”的代码,预计该代码将具有 char8_t 类型,该类型将是无符号字符。我定义了一个这样的类型:
using char8_t = unsigned char;
代码如下:
std:string data;
const char8_t* ptr = data.c_str ();
无法编译,因为它不会在没有 reinterpret_cast 的情况下将有符号字符指针转换为无符号字符指针。我可以做些什么来为 2020 年做准备,而无需到处重新解释演员表吗?
【问题讨论】:
-
当
char8_t出现时,std::u8string的std::basic_string也将专门用于char8_t。在处理 UTF-8 字符串时,不要将std::string和std::u8string混合在一起。 -
"这将是一个无符号字符"
char8_t不是这样工作的。它是一种独特的类型,与unsigned char不同,尽管它可以显式且无损地转换为/从它们。 -
就
using char8_t = char;
标签: c++