Я прочитал кучу статей и постов на форумах, обсуждающих эту проблему, все решения кажутся слишком сложными для такой простой задачи.
Вот пример кода прямо с cplusplus.com :
// reading a text file
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main () {
string line;
ifstream myfile ("example.txt");
if (myfile.is_open())
{
while ( myfile.good() )
{
getline (myfile,line);
cout << line << endl;
}
myfile.close();
}
else cout << "Unable to open file";
return 0;
}
Работает нормально, если в example.txt есть только символы ASCII.Все становится грязно, если я пытаюсь добавить, скажем, что-то на русском языке.
В GNU / Linux это так же просто, как сохранить файл как UTF-8.
В Windows это не такРабота.Преобразование файла в UCS-2 Little Endian (что, по-видимому, Windows использует по умолчанию) и замена всех функций на их аналоги wchar_t тоже не помогают.
Разве нет какой-то "правильный "способ сделать это, не делая все виды магических преобразований кодировки?