【发布时间】:2014-03-05 08:58:35
【问题描述】:
我想从使用 UTF-8 编码的文件中读取一些文本并将其转换为 UTF-16,使用 std::wifstream,如下所示:
//
// Read UTF-8 text and convert to UTF-16
//
std::wifstream src;
src.imbue(std::locale("???")); // UTF-8 ???
src.open("some_text_file_using_utf8");
std::wstring line; // UTF-16 string
while (std::getline(src, line))
{
... do something processing the UTF-16 string ...
}
是否有用于 UTF-8 转换的标准语言环境名称?
使用std::locale 是否可以实现该目标?
我正在使用 Visual Studio 2013。
注意:
我知道 I/O 流往往很慢,可以使用 Win32 内存映射文件来加快读取速度,并使用 MultiByteToWideChar() Win32 API 进行转换等。
但对于这种特殊情况,我想要一个仅使用标准 C++ 及其标准库、没有 Boost 的解决方案。
如果 C++ 标准库不能做到这一点,second 选项将是使用 Boost;在这种情况下,我应该使用哪个 Boost 库?
【问题讨论】:
-
如果我正确理解您的问题,我认为您想使用本地化库中的 codecvt 方面。 See the related documentation,尤其是示例代码。
std::codecvt_utf8_utf16可能是候选人。 -
@WhozCraig:感谢link:那里提供的示例代码似乎工作正常。
标签: c++ c++11 utf-8 visual-studio-2013 iostream