当您只能获取存储在 char16_t 的 basic_string 中的值时,如何使用只接受 char * 和 wchar_t * 的方法?
例如在 cstdio 中删除。
- cstdio 中的 remove 函数只接受 char * 和 wchar_t *。
- 您不能将 char16_t 转换为 wstring: link。
- Char 无法处理所有 UTF-16 字符
您需要将 UTF-16 转码为std::basic_string<char16_t>
任何采用std::string
或char const*
作为参数的函数使用的正确编码。wchar_t
同样,在定位基于序列时,您需要更改编码。当然,由于人们已经抛弃了在内部处理字符而不是编码的想法,因此提供合适的工具来处理编码之间的变化会很有用。有两种方法可以处理字节和字符之间的编码/解码,即std::codecvt<...>
多字节转换系列函数(例如,mbtowc()
.
什么转换是合适的还取决于目标 API:并非所有 API 都能够合理处理,例如 UTF-8。转换可能涉及实际支持的字符的选择。