Пробовал самые популярные вариант.
На данный момент прогресс остановился на таком моменте:
system( "chcp 65001" );
_setmode( _fileno( stdout ), _O_U8TEXT );
_setmode( _fileno( stdin ), _O_U8TEXT );
std::wcout << L"строка" << std::endl;
std::wcout << L"string" << std::endl;
std::wstring test;
std::wcout << L"input: ";
std::wcin >> test;
std::wcout << test << std::endl;
Получаемый вывод:
Active code page: 65001
строка
string
input: строка
Press <RETURN> to close this window...
Т.е. первые два варианта отрабатывают нормально, но в случае ввода в консоль получаются неизвестные символы.
Как это можно исправить?
Так же как можно решить проблему с тем, что программа принимает аргументы командной строки, которая по умолчанию в 866 и символы в любом случае будут приходить в этой кодировке и сменой кодировки во время выполнения проблему не решить?