Visual C++. Ввод и вывод русских букв в консольном приложении C++
28.09.2011
Вывод
С выводом всё легко, в начале функции main запишем следующую строку:
setlocale(0,"Rus");
И теперь символы кириллицы будут выводится без особых проблем.
int main( int argc, char *argv[] )
{
setlocale(0,"Rus");
std::cout<<"Привет!!!";
}
Ввод
Какое же бывает удивление начинающего программиста, когда введя вроде бы русские буквы в переменную, а при выводе этой же переменной он получает кучу вопросиков.
Решение есть, возможно не самое оптимальное, но работает корректно.
char Name[20];
SetConsoleCP(1251);
scanf("%s", Name);
SetConsoleCP(866);
std::cout<
Давайте резберём всё по строкам:
1) Объявляем переменную Name.
2) Устанавливаем кодировку в консоли на 1251.
3) Вводим переменную.
4) Устанавливаем кодировку в консоли на 866.
5) Выводим переменную на экран.
А для работы вместо типа char со string, делаем вот так:string Name;
SetConsoleCP(1251);
std::cinName;
SetConsoleCP(866);
std::cout<
Единственно, что перед вводом русских букв надо не забывать всегда писатьSetConsoleCP(1251);
А непосредственно после вводаSetConsoleCP(866);