我需要C++中的代码才能将wchar_t*中给出的字符串转换为UTF-16字符串。它必须在Windows和Linux上均可工作。在搜索过程中,我浏览了很多网页,但是这个主题对我来说仍然不清楚。

据我了解,我需要:

  • 用LC_TYPE和UTF-16编码调用setlocale
  • 使用wcstombswchar_t转换为UTF-16字符串。
  • 调用setlocale恢复以前的语言环境。

  • 您知道我可以通过便携式方式(Windows和Linux)将wchar_t*转换为UTF-16的方法吗?

    最佳答案

    在C++ 03中,没有单一的跨平台方法可以做到这一点(并非没有库)。部分原因是wchar_t本身在各个平台上都不一样。在Windows下,wchar_t是一个16位值,而在其他平台上,它通常是32位值。因此,您将需要两个不同的代码路径来执行此操作。

    10-04 20:56
    查看更多