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