Библиотека clocale c для чего нужна

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) — <><<>agg. 1 Che è proprio di un determinato luogo: autorità locali; ferrovia –l. 2 (med.) Che concerne o interessa solo una data parte del corpo umano: malattia –l; cura –l. 3 Treno viaggiatori a breve percorso, che si ferma… … Enciclopedia di italiano

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

Источник

Библиотека clocale c для чего нужна

Это минимальная реализация, поддерживающая только необходимое значение «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 для всех категорий:

Пример сравнения локалей:

Библиотека clocale c для чего нужна. Смотреть фото Библиотека clocale c для чего нужна. Смотреть картинку Библиотека clocale c для чего нужна. Картинка про Библиотека clocale c для чего нужна. Фото Библиотека clocale c для чего нужна
Учебник C++ (Qt Creator и MinGW) в формате PDF

Помощь сайту

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

Источник

Библиотека clocale c для чего нужна

Файл описывает типы данных, функции и макросы, необходимые для выполнения этой задачи.

В нём описаны функции: setlocale(3), устанавливающая текущую локаль и localeconv(3), которая возвращает информацию о форматировании чисел.

Существуют различные категории информации в локали, которые программа может использовать; они описаны как макросы. Используя их в качестве первого аргумента функции setlocale(3), можно установить значение значение категории в желаемой локали:

Если второй аргумент функции setlocale(3) равен пустой строке «», то локаль по умолчанию будет определяться следующим образом:

1. Если существует непустая переменная окружения LC_ALL, то используется её значение. 2. Если существует переменная окружения с именем одной из вышеописанных категорий и она непустая, то её значение присваивается этой категории. 3. Если существует непустая переменная окружения LANG, то используется её значение.

Расширения POSIX.1-2008 программного интерфейса локали

Расширения представляют новые функции для создания и управления объектами локали (newlocale(3), freelocale(3), duplocale(3) и uselocale(3)) и различные новые библиотечные функции с суффиксом«_l» (например, toupper_l(3)), которые расширяют обычный зависящий от локали программный интерфейс (например, toupper(3)) так, что позволяют указать объект локали, который будет использован при работе функции.

Источник

Не забываем о языковых и культурных особенностях

Пример использования локализации и переопределения фасета

Рассмотрим пример, в котором попробуем технику подмены стандартного фасета локализации. Обычно рассматривают потоковый ввод/вывод, но я хотел бы заострить внимание на том, что может происходить, если писать код, зависимый от локализации, не зная что это такое. Попробуем использование локалей с распространенной библиотекой boost::xpressive (можно использовать и boost::regex, но тем кто первый раз слышит про xpressive, будет полезно о нем почитать):

Некоторых удивит, что выдача программы сильно зависит от платформы. Более того, на одной платформе программа может выдавать различные результаты. Все дело в locale. Если предположить, что кодировка файла примера — windows-1251, то результат «icase fail» можно достичь на платформе, в которой пользовательская локаль имеет кодировку, отличную от cp1251. Самый распространенный пример такой платформы — mingw (скачанный как бинарник с sourceforge) + Windows. В таком случае, алгоритмы boost::xpressive просто не знают какие символы в расширенной части кодовой таблицы cp-1251 являются буквами. И виноват в этом фасет ctype классической локализации. Сообщив правильный фасет ctype локализации, с которой работает xpressive, мы добъемся нужного результата. В простейшем случае, если в системе установлена нужная локализация, нам достаточно сделать ее глобальной

Все бы ничего, но на платформе, где не поддерживается локализация ru_RU:CP1251 наш код выкинет исключение. В лучшем случае, неправильно указано имя, в худшем — нужной локализации нет в системе. Решим эту проблему реализацией собственного фасета ctype (именно он объяснит xpressive какие символы являются буквами и каким образом меняется регистр).

Простейший пример реализации фасета ctype и примера, для кодировки CP1251:

Теперь результат программы не будет зависеть от конкретной платформы. Переопределяя стандартные фасеты или добавляя новые, можно управлять поведением алгоритма/программы в зависимости от культурных и языковых особенностей пользователей.

Полное описание класса std::local и техники использования фасетов можно найти в 3-ем специальном издании книги Бьерна Страуструпа «Язык программирования C++», в приложении. Для уточнения структуры фасетов, можно воспользоваться любым руководством по STL. Например тут.

Задача преобразования кодировок решается реализацией фасета codecvt. Если будет интересно, расскажу о ней в следующей статье.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *