Стандартная библиотека C |
---|
Общие темы |
Разные заголовки |
В вычислении , функция локализации C представляют собой группа функций в языке программирования , реализующий базовые процедуры локализации. [1] [2] Функции используются в многоязычных программах для адаптации к конкретному языку. В частности, можно изменить способ отображения чисел и валюты. Эти настройки влияют на поведение функций ввода / вывода в стандартной библиотеке C. [3]
Обзор функций [ править ]
Функции и типы локализации C определены в locale.h ( заголовок clocale в C ++). [4] [5]
Функция | Описание |
---|---|
setlocale | устанавливает и получает текущую локаль C |
localeconv | возвращает сведения о числовом и денежном форматировании для текущего языкового стандарта |
Критика [ править ]
Стандартные функции локализации C подвергаются критике, поскольку состояние локализации хранится глобально. Это означает, что в данной программе все операции, связанные с языковым стандартом, могут одновременно использовать только один языковой стандарт. В результате очень сложно реализовать программы, использующие более одного языкового стандарта. [6]
Эти функции изменяют поведение printf / scanf / strtod, которые часто используются для записи сохраненных данных в файл или в другие программы. Результат является то , что сохраненный файл в одной местности не будет читаться в другой местности, или не быть читаемыми на всех из - за предположения , такие как «номера заканчиваются на разделителях символов». Большинство крупномасштабных программ принудительно устанавливают языковой стандарт на «C» (или другое фиксированное значение), чтобы обойти эти проблемы.
Пример [ править ]
#include <stdio.h>#include <stdlib.h>#include <locale.h>int main ( void ) { / * Перед этим установлен языковой стандарт "C". Этот вызов устанавливает «текущую локаль» путем чтения переменных среды: * / setlocale ( LC_ALL , "" ); const struct lconv * const currentlocale = localeconv (); printf ( "В текущей локали символ валюты по умолчанию:% s \ n " , currentlocale -> currency_symbol ); вернуть EXIT_SUCCESS ; }
См. Также [ править ]
Ссылки [ править ]
- ^ ISO / IEC 9899: 1999 спецификация (PDF) . п. 204, § 7.11 Локализация .
- ^ Прата, Стивен (2004). Праймер С плюс . Самс Паблишинг. Приложение B, раздел V: Стандартная библиотека ANSI C с дополнениями C99. ISBN 0-672-32696-5.
- ^ «ISO / IEC 9899: 201x» (PDF) . 12 апреля 2011. с. 181. Архивировано из оригинального (PDF) 29 марта 2018 года.
- ^ "locale.h" . utas.edu.au . инфосис . Проверено 14 сентября 2011 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ "openbsd / src" . GitHub . Проверено 9 апреля 2018 .
- ^ «Стандартные локали C и стандартные локали C ++» . Rogue Wave Software, Inc. 1996 г.