Русский язык в консоли C++
Вы наверное не раз пытались вывести в консольное приложение русский текст, но вместо него выводились разные кракозябры.
К примеру, если мы напишем такой код на С++
#include using namespace std; int main()
То после компиляции, вот что будет выдавать нам консольное окно программы.
Если же мы будем использовать функцию setlocale() внутри функции main()
#include using namespace std; int main()
То получим вместо иероглифов нормальный русский шрифт, вуаля:
Также, можно опустить последний аргумент функции — setlocale(LC_ALL, «Russian»); можно заменить на setlocale(0, «»); — работоспособность программы от этого не изменится.
Как поставить русский язык в си
При использовании кириллических символов мы можем столкнуться с ситуацией, когда вместо кириллических символов отображаются непонятные знаки. Особенно это актуально для ОС Windows. И в этом случае необходимо явным образом задать текущую локаль (культуру) для вывода символов. В Си это делается с помощью функции setlocale() , определение которой имеется в заголовочном файле locale.h .
Итак, изменим код, который использовался в прошлых темах следующим образом:
#include int main(void)
Компиляция и запуск в ОС Windows может выглядеть следующим образом:
Вместо русских слов я получаю непонятные символы, и это не то, что ожидалось. Теперь изменим код, применив функцию setlocale:
#include #include int main(void)
Поскольку функция setlocale определена в файле locale.h, то он подключается с помощью директивы #include .
Повторно компилируем и запустим приложение:

Стоит отметить, что в качестве кодировки текстового файла в этом случае должна использоваться кодировка ANSI или Windows-1251, но не UTF-8.
На некоторых платформах, например, Ubuntu 16.04, мы можем не столкнуться с подобной проблемой. И в этом случае вызов функции setlocale просто не окажет никакого влияния.
Вывод русского языка

Ввод русского языка
Не могу понять, как сделать так, чтобы вместо непонятных иероглифов в командной строке выдавался.
Обеспечить поддержку русского языка в программе
Как сделать чтоб когда я пишу например: printf("\nСписок чего-то там"); Выбивало не какие то.
Поддержка русского языка в Embarcadero Turbo C 2.01
установил embarcaderoTurbo C 2.01 как сделать чтоб работала поддержка русского языка?
Как поставить русский язык в си
Если программа при выводе на консоль использует кириллицу, то мы можем столкнуться с ситуацией, когда вместо кириллических символов будут отображаются непонятные знаки. Особенно это актуально для ОС Windows. И в этом случае необходимо явным образом задать текущую локаль (культуру) для вывода символов. В языке C++ это можно сделать с помощью встроенной функции setlocale() .
Итак, изменим код, который использовался в прошлых темах следующим образом:
#include int main()
Компиляция и запуск в ОС Windows может выглядеть следующим образом:
c:\cpp>g++ -std=c++20 -Wall -pedantic app.cpp -o app & app Р?С?РёР?РчС' Р?РёС?! c:\cpp>
Вместо ожидаемого текста я получаю какие-то непонятные символы. Теперь изменим код, применив функцию setlocale() :
#include int main()
Теперь для вывода данных на консоль вместо объекта std::cout применяется объект std::wcout , который предназначен для работы с символами Unicode. В данном случае предполагается, что кодировка самого файла — UTF-8. Кроме того, перед строкой указан символ L .
Повторно компилируем и запустим приложение:
c:\cpp>g++ -std=c++20 -Wall -pedantic app.cpp -o app & app Привет мир! c:\cpp>
На некоторых платформах, например, Ubuntu, мы можем не столкнуться с подобной проблемой. И в этом случае вызов функции setlocale просто не окажет никакого влияния.
