我已经阅读了 Stroustrup 的附录 D(特别注意语言环境和 Codecvt)。Stroustrup 没有给出一个好的编解码器和加宽示例(恕我直言)。我一直在尝试从互联网上调转东西,没有任何乐趣。我也尝试过灌输字符串流但没有成功。
任何人都能够显示(并解释)从 UTF-8 到 UTF-16(或 UTF-32)编码的代码吗?注意:我事先不知道输入/输出字符串的大小,所以我希望解决方案应该使用reserve
和一个back_inserter
. 请不要使用out.resize(in.length()*2)
.
完成后,如果代码确实有效,那就太好了(令人惊讶的是那里有多少损坏的代码)。请确保以下“往返”。下面的字节是 UTF-8 和 UTF-{16|32} 中“bone”的汉字。
const std::string n("\xe9\xaa\xa8");
const std::wstring w = L"\u9aa8";
我为一个基本问题道歉。在 Windows 上,我使用 Win32 API,并且在编码之间移动时没有这些问题。