При написании программ в среде Visual studio иногда возникает необходимость вывода текста на русском языке. Казалось бы, что тут сложного? Берёшь и выводишь! А вот нет, иначе бы не было кучи форумов и страничек в интернете с этой проблемой.
А проблема заключается в кодировке, причём все сайты пишут работающие способы, но, к сожалению, далеко не у всех. В этой статье мы расскажем вам о том, как действительно нужно исправлять эту проблему.
Итак, вы написали программу, в которой решили вывести строку русскими буквами, например, "Русский язык в консоли!". Вы запускаете программу, но вместо заветной строки видите там "кракозябры"! Что же делать?
#include <iostream>
int main() {
std::cout << "Русский язык в консоли!" << std::endl;
getchar();
return 0;
}
Чаще всего пишут, что достаточно лишь добавить setlocale(LC_ALL, "Russian"); в начале программы (для C программ требуется подключение библиотеки locale.h: #include <locale.h>). Сделаем это. Теперь программа должна выглядеть так:
#include <iostream>
#include <locale.h>
int main() {
setlocale(LC_ALL, "Russian");
std::cout << "Русский язык в консоли!" << std::endl;
getchar();
return 0;
}
А возможный результат может выглядеть так:
Запустим её, если русский язык уже выводится - поздравляем! Проблема решена! Если нет, то идём дальше.
В верхнем меню выберете пункт файл, Сохранить <название вашего файла> как. В открывшемся окне вместо Сохранить выберем Сохранить с кодировкой, подтвердим, что желаем заменить файлы и выберем кодировку Кириллица (Windows) - кодовая страница 1251.
Нажмём ОК и соберём программу заново.
Запустим программу вновь и теперь русский язык будет корректно выводиться!
UPD: Ещё один способ заставить работать русский язык
Если ничего из вышеперечисленного не помогло, значит проблема в кодировке самой консоли. А её можно изменить с помощью команды system("chcp 1251");, то есть программа будет выглядеть так:
#include <iostream>
#include <locale.h>
#include <cstdlib>
int main() {
setlocale(LC_ALL, "Russian"); // задаём русский текст
system("chcp 1251"); // настраиваем кодировку консоли
std::cout << "Русский язык в консоли!" << std::endl;
getchar();
return 0;
}
