Есть пара ошибок:
Иначе не совпадает, если
if (file.is_open())
{
...
else cout << "Unable to open file";
...
}
Использовать std :: wcout.s
- широкая строка.Используйте широкий вывод.
std::wcout << s << '\n'; // not std::cout notice the w
Нет переменной с именем myfile
Я, вероятно, имел в виду file
/*my*/file.close();
Примечание:
Вы должны наполнить поток передоткрывая его.
std::wifstream file;
file.imbue(utf8_locale);
file.open("dao.txt");
Проблема заключается в том, что наполнение завершится ошибкой, если из файла были прочитаны какие-либо символы.Некоторые реализации будут проверять, есть ли маркер спецификации (возвращая символы, если их нет).Но проверка этих символов спецификации означает, что файл был прочитан и, следовательно, приведет к сбою содержимого.Поэтому всегда открывайте файл перед открытием.