我发现这个主题在字符串、u16string 和 u32string 之间转换,并且解决方案(看起来真的很棒)只使用 libc++ 而不是 libstdc++。目前 libc++ 不可用 - 很难编译并且在 Windows 上无法正常工作。
是否有任何方法可以使用 C++11 和 libstdc++ 在所有平台上进行转换?
我对将 u32_string 转换为字符串(utf8)特别感兴趣,反之亦然。
我发现这个主题在字符串、u16string 和 u32string 之间转换,并且解决方案(看起来真的很棒)只使用 libc++ 而不是 libstdc++。目前 libc++ 不可用 - 很难编译并且在 Windows 上无法正常工作。
是否有任何方法可以使用 C++11 和 libstdc++ 在所有平台上进行转换?
我对将 u32_string 转换为字符串(utf8)特别感兴趣,反之亦然。
C++11 中有一种可移植的方式通过wstring_convert类执行此操作。
但是,它似乎还没有实现 libstdc++(从 gcc 4.8 开始)
这同样适用于:
codecvt<char16_t, char, mbstate_t>.
codecvt<char32_t, char, mbstate_t>.
codecvt_utf8.
codecvt_utf16.
codecvt_utf8_utf16.
事实上,标头<codecvt>
仍然不存在于 gcc 发行版中。
您可以使用 utf8cpp ( http://utfcpp.sourceforge.net/ ),它将这些转换器提供为易于使用的 C++。