将basic_string <char16_t>传递给只接受wchar_t *和char * </char16_t>的方法

时间:2013-11-04 11:02:09

标签: c++ linux windows c++11

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

例如在cstdio中删除。

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

1 个答案:

答案 0 :(得分:2)

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

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