Нашёл, как мне показалось, очень полезную статью: ссылка
Попробовал использовать "Правильное, но сложное решение", ничего к сожалению не вышло. Полностью перешёл с string на wstring, с консольных и файлов потоков на соответствующие расширенные потоки wcout, wcin, wifstream, так же с обычных С-строка на расширенные C-строки. Точнее из консоли получается взять Русские слова, а из файлов нет. Пример:
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
int wmain(int argc, wchar_t **argv)
{
wifstream in{ "input.txt" };
wstring line;
getline(in, line);
wcout << line << endl;
return 0;
}
В итоге всё равно кракозябре в консоли и при отладке в "line", аналогичные кракозябры.
lineне читается, или что в консоль неправильно печатается? – user7860670 Mar 25 '18 at 10:31in.imbue(::std::locale{in.getloc(), new ::std::codecvt_utf16<wchar_t, 0x10ffff, ::std::consume_header>{}});. – user7860670 Mar 25 '18 at 11:46