я некоторые погуглить вокруг, но не смог найти однозначный ответ (не используя правильную терминологию, возможно?)Как читать символы WCP-1252 на C++?
Во всяком случае, у меня есть несколько текстовых файлов в формате ANSI (WCP-1252), чьи персонажи я хочу обработать в программе C++, но дело в том, что я не знаю, как хранить символы 2 байта, которые соответствуют десятичным кодам от 128 до 255. Просто, чтобы быть уверенными, хотя, я попытался следующий код:
ifstream infile("textfile.txt");
char c;
infile>>c; //also tried infile.get(c);
cout<<c;
Неудивительно, что 1-байтовый символ не смог сохранить символ из расширенного набора после 0x7F (я думаю, он просто отобразил символ ASCII, соответствующий значению первого байта, и отбросил второй или наоборот).
* Чтение * символы на самом деле не проблема, но вы преобразовываете их в нечто другое (и «2 байта» предлагает Unicode). Вы правы: вы не можете сохранить символ Unicode в простой символ. Вместо этого используйте 'wchar'. Тем не менее, 'cout' не работает на высоких ASCII-символах - это другая (не связанная) проблема. – usr2564301
Я, хотя и нелюбимый >> c; будут захватывать не печатные материалы, но их распечатать - это другое дело. попробуйте 'cout << int (c) <<" ";' чтобы более устойчивый взгляд на то, что вы читаете. – RichardPlunkett
У вас есть два байтовых символа в файле? Если я не смущен, WCP-1252 имеет только символы от 0 до 255 или один байт. –