2

当您只能获取存储在 char16_t 的 basic_string 中的值时,如何使用只接受 char * 和 wchar_t * 的方法?

例如在 cstdio 中删除。

  • cstdio 中的 remove 函数只接受 char * 和 wchar_t *。
  • 您不能将 char16_t 转换为 wstring: link
  • Char 无法处理所有 UTF-16 字符
4

1 回答 1

2

您需要将 UTF-16 转码为std::basic_string<char16_t>任何采用std::stringchar const*作为参数的函数使用的正确编码。wchar_t同样,在定位基于序列时,您需要更改编码。当然,由于人们已经抛弃了在内部处理字符而不是编码的想法,因此提供合适的工具来处理编码之间的变化会很有用。有两种方法可以处理字节和字符之间的编码/解码,即std::codecvt<...>多字节转换系列函数(例如,mbtowc().

什么转换是合适的还取决于目标 API:并非所有 API 都能够合理处理,例如 UTF-8。转换可能涉及实际支持的字符的选择。

于 2013-11-04T11:47:51.810 回答