Например, если я напишу:
cout << "Привет!" << endl; //it's hello in Russian
В консоли это будет что-то вроде ╧ЁштхЄ!
.
ОК, я знаю, что мы можем использовать:
setlocale(LC_ALL, "Russian");
Но после этого аргументы командной строки на русском языке не работают (если я запускаю свою программу через BAT-файл):
StartProgram.bat
chcp 1251
MyProgram.exe -user=Олег -password=Пароль
Итак, после setlocale
программа не может правильно прочитать русские аргументы.
Это происходит потому, что BAT-файл в CP1251, но консоль в CP866.
Итак, возникает вопрос:
Как написать русский текст в консоли C ++ и в то же время правильно прочитать аргументы командной строки на русском языке.