Locale.h
locale.h
Содержание
Использование
Подключение заголовочного файла
Функции
Пример кода
Ссылки
Полезное
Смотреть что такое «Locale.h» в других словарях:
locale — locale UNIX‐утилита, выводящая информацию о локали. Содержание 1 Использование 2 Синтаксис 3 Параметры … Википедия
Locale — locale UNIX‐утилита, выводящая информацию о локали. Содержание 1 Использование 2 Синтаксис 3 Параметры … Википедия
locale — ● locale nom féminin Familier. Dans un journal, rubrique particulière à une localité, une ville, une région. ● local, locale, locaux adjectif (bas latin localis, de locus, lieu) Particulier à un lieu, à une région, à un pays : Coutumes locales.… … Encyclopédie Universelle
locale (1) — <
locale — index district, locality, location, part (place), region, scene, seat, section ( … Law dictionary
locale — (n.) 1772, local, from Fr. local, noun use of local (adj.), from L. locus place (see LOCUS (Cf. locus)). English spelling with e (1816) probably is based on morale or else to indicate stress. The word s right to exist depends upon the question… … Etymology dictionary
locale — meaning ‘a scene or locality, especially with reference to an event or occurrence taking place there’, was adopted in the 18c from French in the form local and respelt in the 19c by writers such as Walter Scott to indicate that the stress lay on… … Modern English usage
locale — / locality [n] physical setting area, bailiwick, belt, district, domain, haunt, hole, home, location, locus, neck of the woods*, neighborhood, place, position, region, scene, sector, site, sphere, spot, stage, stomping ground*, territory, theater … New thesaurus
Include locale h что это
Это минимальная реализация, поддерживающая только необходимое значение «C» для локала; строки, представляющие другие локалы, не воспринимаются. («» также допустимо и представляет локал по умолчанию для данной реализации, в данном случае «C»).
locale.h определяет структуру lconv для сбора информации о локале, со следующими полями: char *decimal_point
Знак десятичной точки, используемый для форматирования «обычных» чисел (все числа, кроме представляющих количество денег). «.» в локале «C».
Знак (если есть), используемый для разделения групп цифр, когда форматируются обычные числа. «» в локале C.
Определяет количество цифр в группе (если группировка вообще производится) при форматировании обычных чисел. Численное значение каждого знака в строке представляет число цифр в следующей группе, а значение 0 (то есть завершающий строку NULL) означает продолжение группировки используя последнее указанное значение. char_max показывает, что дальнейшая группировка не нужна. «» в локале C.
Международный знак валюты (первые три знака), если есть, и знак для отделения от чисел. «» в локале C.
Знак местной валюты, если есть. «» в локале C.
Знак для разделения дробной части в денежных суммах. «» в локале C.
Похоже на thousands_sep, но используется в денежных суммах. «» в локале C.
Похоже на grouping, но использyется для денежных сумм. «» в локале C.
Строка для отметки положительных денежных сyмм пpи фоpматиpовании. «» в локале C.
Строка для отметки отрицательных денежных сумм при форматировании. «» в локале C.
Число показываемых цифp пpи фоpматиpовании денежных сyмм в сответствии с междyнаpодными соглашениями. CHAR_MAX (наибольшее число, пpедставимое в pамках типа char) в локале C.
Число показываемых цифp пpи фоpматиpовании денежных сумм в сответствии с местными пpавилами. CHAR_MAX в локале C.
1 показывает, что символ местной валюты использyется пеpед положительной или нyлевой денежной суммой; 0 показывает, что знак валюты ставится после отфоpматиpованного числа. CHAR_MAX в локале C.
1 показывает, что символ местной валюты должен быть отделен от положительной или нyлевой денежной сyммы пробелом; 0 показывает, что знак валюты должен быть прижат к числу.
1 показывает, что символ местной валюты использyется пеpед отрицательной денежной суммой; 0 показывает, что знак валюты ставится после отфоpматиpованного числа. CHAR_MAX в локале C.
1 показывает, что символ местной валюты использyется пеpед положительной или нyлевой сyммой денег; 0 показывает, что знак валюты ставится после числа. char_max в локале C.
Управляет позицией знака положительности для чисел, представляющих денежные суммы. 0 означает круглые скобки вокруг числа; 1 означает знак перед числом и знаком валюты; 2 означает знак после числа и знака валюты; 3 означает знак сразу перед знаком валюты; 4 означает знак сразу после знака валюты. CHAR_MAX в локале C.
Упpавляет позицией отрицательного знака для чисел, пpедставляющих денежные суммы; использyются те же пpавила, что и для p_sign_posn. CHAR_MAX в локале C.
Это минимальная реализация, поддерживающая только значение C для локала; строки, представляющие другие локалы не обрабатываются. («» также допустимо; это представляет локал по умолчанию для данной реализации, в данном случае эквивалентно C.)
Если NULL используется как аргумент locale, то setlocale возвращает указатель на строку, представляющую текущий локал (всегда C в этой реализации). Приемлемое значение для category определено в locale.h как макрос, начинающийся с «LC_», но в этой реализации значения, переданные в аргументе category не проверяются.
localeconv возвращает указатель на структуру (также определенную в locale.h), описывающую зависимые от locale текущие установки.
setlocale возвращает или указатель на строку, в которой содержится имя текущего локала (всегда C для этой реализации), или, если запрашиваемое locale не поддерживается, NULL.
localeconv возвращает указатель на стрктуру типа lconv, которая описывает действующие соглашения по сравнению и форматированию данных (в этой реализации они всегда соответствуют локалу C).
Стандарт ANSI требует наличия функции setlocale, но только локал C должен поддерживаться во всех реализациях.
Настройка локали
При изменении регистра русских букв может возникнуть проблема. Чтобы ее избежать, необходимо правильно настроить локаль (совокупность локальных настроек системы).
Настройка локали в языке C
В первом параметре указывается категория в виде числа от 0 до 5 или соответствующий числу макрос:
Чтобы использовать другую кодировку нужно указать ее название после точки, например, «.1251» или «Russian_Russia.1251» :
Вместо названия можно указать пустую строку. В этом случае будет использоваться локаль, настроенная в системе:
В качестве значения функция возвращает указатель на строку с названием локали, соответствующей заданной категории, или нулевой указатель в случае ошибки. Если во втором параметре передан нулевой указатель, то функция возвращает указатель на строку с названием текущей локали:
После настройки локали многие функции будут работать не так как раньше. Например, от настроек локали зависит вывод функции printf() :
Некоторые функции позволяют указать локаль в качестве параметра, например, функция _printf_l() :
Пример настройки локали и вывода текущего названия локали приведен в листинге 7.1.
Листинг 7.1. Настройка локали
Функция localeconv() позволяет получить информацию о способе форматирования вещественных чисел и денежных сумм для текущей локали. Прототип функции:
Объявление структуры lconv выглядит следующим образом:
В VC++ доступны также следующие поля структуры lconv :
Настройка локали в языке C++
Второй и третий конструкторы позволяют задать название локали. Вместо названия можно указать пустую строку. В этом случае будет использоваться локаль, настроенная в системе. Пример:
Четвертый конструктор создает копию объекта:
Пятый и шестой конструкторы в параметре cat позволяют указать следующие флаги (или их комбинацию через побитовый оператор | ):
Пример создания объекта класса locale для всех категорий:
Пример сравнения локалей:
Учебник C++ (Qt Creator и MinGW) в формате PDF
Помощь сайту
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов
Класс locale
Класс, описывающий объект языкового стандарта, инкапсулирующий данные по соответствующей культуре в качестве набора аспектов, которые собирательно определяют ту или иную локализованную среду.
Синтаксис
Remarks
Аспект — это указатель на объект класса, выведенного производным от класса facet, который обладает общим объектом в формате:
Можно задать открытый набор данных аспектов. Можно также создать объект языкового стандарта, назначающий произвольное количество аспектов.
Категория collate (LC_COLLATE) включает аспекты:
Категория ctype (LC_CTYPE) включает аспекты:
Категория monetary (LC_MONETARY) включает аспекты:
Категория numeric (LC_NUMERIC) включает аспекты:
Категория time (LC_TIME) включает аспекты:
Категория messages (LC_MESSAGES) включает аспекты:
(Последняя категория необходима для POSIX, но не для стандарта C.)
Некоторые из этих предопределенных аспектов используются iostream классами для управления преобразованием числовых значений в текстовые последовательности и из них.
В данном случае можно также вызвать статическую функцию-член:
создать объект языкового стандарта без аспектов. Это также прозрачный языковой стандарт. Если функции шаблона has_facet и use_facet не могут найти требуемый аспект в прозрачном языковом стандарте, они обращаются к первому глобальному языковому стандарту, а затем, если они прозрачны, классический языковой стандарт. Можно написать:
Последующие операции вставки cout исправляются текущим состоянием глобального языкового стандарта. Можно даже написать:
Числовые правила форматирования для последующих вставок в cout остаются такими же, как в языковом стандарте C, даже если глобальный языковой стандарт предоставляет другие правила вставки дат и денежных сумм.
Конструкторы
| Конструктор | Описание |
|---|---|
| locale | Создает языковой стандарт, копию языкового стандарта или копию языкового стандарта, в которой аспект или категория заменены аспектом или категорией из другого языкового стандарта. |
Определения типов
| Имя типа | Описание |
|---|---|
| category | Целочисленный тип, который содержит значения битовой маски для обозначения стандартных семейств аспектов. |
Функции элементов
| Функция-член | Описание |
|---|---|
| состоят | Вставляет аспект из определенного языкового стандарта в целевой языковой стандарт. |
| name | Возвращает имя сохраненного языкового стандарта. |
Статические функции
| Имя | Описание |
|---|---|
| классическая | Данная статическая функция-член возвращает объект языкового стандарта, представляющий классический языковой стандарт C. |
| global | Сброс языкового стандарта программы по умолчанию. |
Операторы
Классы
| Класс | Описание |
|---|---|
| устанавливают | Класс, используемый как базовый класс для всех аспектов языкового стандарта. |
| id | Класс члена содержит уникальный идентификатор аспекта, применяемый в качестве индекса для поиска аспектов в языковом стандарте. |
Требования
Заголовок: языкового стандарта>
Пространство имен: std
locale::category
Целочисленный тип, который содержит значения битовой маски для обозначения стандартных семейств аспектов.
Комментарии
Два более полезных значения:
locale::classic
Данная статическая функция-член возвращает объект языкового стандарта, представляющий классический языковой стандарт C.
Возвращаемое значение
Ссылка на языковой стандарт C.
Комментарии
Классический язык C — это языковой стандарт ASCII американского английского языка в стандартной библиотеке C. Это языковой стандарт, который неявно используется в программах, которые не являются международными.
Пример
locale::combine
Вставляет аспект из определенного языкового стандарта в целевой языковой стандарт.
Параметры
source_locale
Языковой стандарт, содержащий аспект для вставки в целевой языковой стандарт.
Возвращаемое значение
Функция-член возвращает объект языкового стандарта, который заменяет или добавляет в * этот аспект, указанный в source_locale.
Пример
Класс facet
Класс, используемый как базовый класс для всех аспектов языкового стандарта.
Комментарии
locale::global
Сброс языкового стандарта по умолчанию для программы. Этот вызов влияет на глобальный языковой стандарт для C и C++.
Параметры
new_default_locale
Языковой стандарт, который будет использоваться программой по умолчанию.
Возвращаемое значение
Языковой стандарт до сброса языкового стандарта по умолчанию.
Комментарии
При запуске программы глобальный языковой стандарт совпадает в классическим языковым стандартом. Функция global() вызывает setlocale( LC_ALL, loc.name. c_str()) для установки соответствующего языкового стандарта в стандартной библиотеке C.
Пример
Класс id
Класс члена содержит уникальный идентификатор аспекта, применяемый в качестве индекса для поиска аспектов в языковом стандарте.
Комментарии
locale::locale
Создает языковой стандарт, копию языкового стандарта или копию языкового стандарта, в которой аспект или категория заменены аспектом или категорией из другого языкового стандарта. Также включает деструктор.
Параметры
locale_name
Имя языкового стандарта.
from_locale
Языковой стандарт, который будет копироваться при создании нового языкового стандарта.
Другое
Языковой стандарт, из которого будет выбираться категория.
new_category
Категория для замены в созданном языковом стандарте.
new_facet
Аспект для замены в созданном языковом стандарте.
Комментарии
Первый конструктор инициализирует объект для соответствия глобальному языковому стандарту. Второй и третий конструкторы инициализируют все категории языкового стандарта, чтобы их поведение соответствовало имени локали locale_name. Остальные конструкторы копируют from_locale, за исключением указанных ниже.
заменяет другие аспекты, соответствующие категории c, для которой c new_category не равно нулю.
заменяет в (или добавляет к) from_locale аспект new_facet, если new_facet не является пустым указателем.
Если имя локали locale_name является пустым указателем или недопустимым, функция создает исключение runtime_error.
Пример
locale::name
Возвращает имя сохраненного языкового стандарта.
Возвращаемое значение
Строка, задающая имя языкового стандарта.
Пример
языковой стандарт:: operator =
Назначает языковой стандарт.
locale::operator!=
Проверка двух языковых стандартов на неравенство.
Параметры
Правильно
Один из языковых стандартов для проверки на неравенство.
Возвращаемое значение
Логическое значение, равное, true Если языковые стандарты не являются копиями одного и того же языкового стандарта. false Если языковые стандарты являются копиями одного и того же языкового стандарта.
Комментарии
Два языковых стандарта равны, если они совпадают, если одна из них является копией другого или если они имеют одинаковые имена.
Пример
locale::operator()
Сравнивает два basic_string объекта в соответствии с правилами сравнения лексикографическим порядком, определенными std::collate аспектом локали.
Параметры
слева
Первая сравниваемая строка.
Правильно
Вторая сравниваемая строка.
Возвращаемое значение
Комментарии
Функция-член фактически выполняет:
Это означает, что объект языкового стандарта можно использовать в качестве объекта функции.
Пример
locale::operator==
Проверка двух языковых стандартов на равенство.
Параметры
Правильно
Один из языковых стандартов для проверки на равенство.
Возвращаемое значение
Логическое значение, равное, true Если языковые стандарты являются копиями одного и того же языкового стандарта. false Если языковые стандарты не являются копиями одного и того же языкового стандарта.
Комментарии
Два языковых стандарта равны, если они совпадают, если одна из них является копией другого или если они имеют одинаковые имена.
Программирование на C, C# и Java
Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы
ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в посторонних группах ВК. Для связи с нами используйте исключительно эти контакты: vscoderu@yandex.ru, https://vk.com/vscode
Как включить русский язык в Си
На начальных этапах программирования многие новички сталкиваются с такой проблемой: они в коде пишут какое-либо сообщение на русском языке для консоли (например, используя printf), но при запуске программы вместо русских слов появляются какие-то непонятные знаки. Покажем, как избавиться от этой проблемы.
Например, при запуске вот этой программы:
В консоли будет отображено следующее:
Всё дело в том, что мы не подключили русскую локализацию.
Исправить эту ошибку очень легко!
Для начала надо добавить следующую библиотеку:
Она отвечает за локализацию.
А затем нам надо просто написать в начале тела кода вот эту строку:
Функция setlocale задаёт локализацию программы. По умолчанию это только английский язык.
LC_ALL указывает программе, что локализированы будут все функции.
“Rus”, как легко догадаться говорит о том, что локализация произойдёт на русский язык.
Вот и всё! Мы включили русский язык в Си. Наша программа модернизирована и обогащена на две строки. Теперь она будет выглядеть вот так:
Поделиться в соц. сетях:
15 комментария(ев) к статье “ Как включить русский язык в Си ”
Что именно? Какая ошибка?
Можете попробовать такой код:
#include
#include
#include
int main()
<
setlocale(LC_ALL, “Rus”);
printf(“Всем привет! Как дела?”);
getch(); //В Visual Studio _getch();
return 0;
>
Этот вариант работает, но он не включает русский язык в стандартном потоке ошибок.
Вместо одних каракулей появились другие. Но никаких ошибок не выдает.
Здравствуйте, Евгений. Существует ещё один способ включения русского языка в Си. Попробуйте использовать следующий код:
#include
#include
#include
int main()
<
SetConsoleCP(1251); //установка кодовой страницы win-cp 1251 в поток ввода
SetConsoleOutputCP(1251); //установка кодовой страницы win-cp 1251 в поток вывода
printf(“Всем привет! Как дела?”);
_getch();
return 0;
>
Здравствуйте, использовала такой метод как в статье.
Все работает при выводе текста функцией printf.
Но, когда я считываю слово функцией scanf, а потом вывожу его функцией printf появляются снова непонятные символы.
Подскажите пожалуйста как это можно исправить.
Здравствуйте! Чуть выше в комментариях приводятся ещё два способа, как включить русский язык в Си. Попробуйте их, должно сработать.
У меня та же проблема, с printf всё работает, но вот если ввести при scanf, то в выводе printf будут кракозябры
Попробуйте способы, указанные в комментариях выше. Один из них точно сработает.
Спасибо за инфу! Все работает.
Всё работает! Спасибо большое!
Правильно “Ru”, а не “Rus”.
setlocale(LC_ALL, “Ru”);
у меня получилось так:
#include
#include
#include
void main()
<
setlocale(LC_ALL, “Rus”);
wprintf(L”Спасибо”);
>
Если кто-то пишет в NotePad++ или чём-то подобном, не забудьте поменять кодировку самого файла с UTF-8 на, например, Windows-1251.
Спасибо за статью.






