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