gpt4 book ai didi

c++ - 使用 basic_ifstream 读取俄语字符 (Unicode)

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:00:52 27 4
gpt4 key购买 nike

这可能吗?我一直在尝试读取一个包含俄语的简单文件,但显然无法正常工作。

我调用了 file.imbue(loc)(此时,loc 是正确的,Russian_Russia.1251)。而 buf 的类型是 basic_string

我使用 basic_ifstream 的原因是因为这是一个模板(从技术上讲,是 basic_ifstream ,但在这种情况下,T=wchar_t)。

这一切都与英文字符完美配合......

while (file >> ch)
{
if(isalnum(ch, loc))
{
buf += ch;
}
else if(!buf.empty())
{
// Do stuff with buf.
buf.clear();
}
}

我不明白为什么我在阅读俄语字符时会出现乱码。 (例如,如果文件包含 хеы хеы хеы,我得到 "яюE"、5(square)、K(square) 等...

最佳答案

代码页 1251 不适用于 Unicode——如果没记错的话,它适用于 8859-5。不幸的是,您的 iostream 实现很可能不支持“开箱即用”的 UTF-16。这有点奇怪,因为这样做只会涉及通过未更改的数据传递,但大多数人仍然不支持它。对于它的值(value),至少如果我没记错的话,C++ 0x 应该添加它。

关于c++ - 使用 basic_ifstream<wchar_t> 读取俄语字符 (Unicode),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2464216/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com