Возможно ли это? Я пытался прочитать простой файл, содержащий русский, и он явно не работает.Чтение на русском языке (Unicode) с использованием basic_ifstream <wchar_t>
Я назвал file.imbue (loc) (и в этот момент loc правилен, Russian_Russia.1251). И ЬиЕ имеет тип basic_string <wchar_t>
Причина я использую basic_ifstream <wchar_t> происходит потому, что это шаблон (так технически, basic_ifstream <T>, но в этом случае T = wchar_t).
Это все прекрасно работает с английскими символами ...
while (file >> ch)
{
if(isalnum(ch, loc))
{
buf += ch;
}
else if(!buf.empty())
{
// Do stuff with buf.
buf.clear();
}
}
Я не понимаю, почему я получаю мусор при чтении русских символов. (например, если файл содержит хеы хеы хеы, я получаю «яюЕ», 5 (квадрат), K (квадрат) и т. д.
О, прекрасные проблемные потоки в C++ :) Может быть, это может дать вам подсказку: http://stackoverflow.com/questions/1509277/why-does-wide-file-stream-in-c-narrow-written- data-by-default – AraK
Таким образом, действительно нет способа, который позволит использовать шаблонные потоки? Это кажется слишком сложным, как я смотрю на него. Не существует способа, чтобы поток читал определенный тип персонажа вообще? – Mark
Во-первых, «хеы хеы хеы» определенно не русские (хотя в нем есть русские символы). Тогда вы могли бы сделать свой пример «полным» и предоставить ссылку на образец файла (в этом случае я буду рад помочь вам помочь). – mlvljr