![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Кириллица в консоли
При составлении про граммы может понадобиться вывести некоторое текстовое сообщение в консоль. И если это сообщение написано на латинице, то в командной строке Windows оно будет отображаться корректно. А если текстовое сообщение написано на кириллице, то вместо передаваемого сообщения, будет отображаться непонятная последовательность букв и символов. Решить данную проблему можно только одним способом - перед тем, как передать текст в консоль, необходимо его перекодировать с помощьюнастройки локали. Локаль - это набор параметров: набор символов, язык пользователя, страна, часовой пояс и др. Локаль необходима для быстрой настройки пользовательского интерфейса, в зависимости от географического положения. В С++ есть функция setlocaleO, которая выполняет перекодировку символов в соответствии с требуемым языком. Эта функция определена в заголовочном файле < clocale> setlocale(LC _ СТУРЕ, " rus"); / / вызов функции настройки локали данная функция работает только с потоком вывода, если же использовать поток ввода, то там будет все та же непонятная абракадабра. # include" stdafx.h" #include < cstdio> #include " string.h" #include < clocale> #include " cstdlib" using namespace std; int main () { setlocale(LC_CTYPE, " rus"); // нефункционируетспотокомввода charstring[20]; getss(string); // вводимC~POKY, используяКириллицу(СТРОКАСОХРАНИТСЯВПЕРЕМЕННОЙНЕКОРРЕКТНО) printf (" \nВЫВОД: %S \n", string); // ВЫВОДстрокиsystem (" pause"); returnО;
Есть один недостаток у данных функций - они работают со шрифтом LucidaConsole. По умолчанию в консоли стоит шрифт Consolas. Поэтому в командной строке необходимо настроить используемый шрифт. Для этого открываем cmd, заходим в свойства, в закладке Шрифт выбираем Lucida
#include " stdafx.h" #include < cstdio> #include " string.h" #include < clocale> #include " cstdlib" #include < Windows.h> using namespace std; int main () { SetConsoleCP(1251); // установкакодовой страницыwin-cp 1251 в потокввода SetConsoleOutputCP(1251); // установка кодовой страницы win-cp 1251 в поток вывода charstring[20]; gets_s(string); // вводим строку, используя Кириллицу (СТРОКА СОХРАНИТСЯ В ПЕРЕМЕННОЙ НЕ КОРРЕКТНО) рrintf(" \nвывод: %S \n", string); // выводстроки system (" pause"); returnО;
|