Я читаю wstring из текстового файла, используя некоторое время ВФ цикла:wstring чтения из текстового файла не печатается правильно, но когда записывается обратно в файл, это нормально
std::wifstream fileStream(path);
std::wstring input;
while (fileStream.eof() == false) {
getline(fileStream, input);
text += input + L'\n';
}
Но когда Я печатаю его в wcout, некоторые символы превращаются в другие. До сих пор č превратился в e (с обратной запятой в ontop), от ě до i (с обратной запятой) и š к символу ошибки. Сначала я подозревал какую-то проблему с форматом. Но когда я пишу строку в новый .txt-файл, все в порядке.
Также я использую _setmode(_fileno(stdout), _O_U8TEXT);
, чтобы заставить wcout работать даже.
Является ли ваша платформа Windows? Если бы вы установили правильную кодовую страницу? Если ваш терминал правильно не поддерживает Unicode? Вы посмотрели фактическое содержимое строки в отладчике, чтобы убедиться, что они были правильными? –
Да. Я не знаю, как его обнаружить из файлов .txt, которые я читаю. Стандартный Windows/VS терминал не поддерживает юникод. И нет, они были неверны в отладчике. –