C функции локализации - C localization functions
Стандартная библиотека C |
---|
Общие темы |
Разные заголовки |
В вычисление, C функции локализации являются группой функций в Язык программирования C реализация базовых процедур локализации.[1][2] Эти функции используются в многоязычных программах для адаптации к конкретному языку. В частности, можно изменить способ отображения чисел и валюты. Эти настройки влияют на поведение функции ввода / вывода в стандартной библиотеке C.[3]
Обзор функций
Функции и типы локализации C определены в locale.h (Clocale заголовок в C ++).[4][5]
Функция | Описание |
---|---|
setlocale | устанавливает и получает текущую локаль C |
localeconv | возвращает сведения о числовом и денежном форматировании для текущего языкового стандарта |
Критика
Стандартные функции локализации C подвергаются критике, потому что состояние локализации хранится глобально. Это означает, что в данной программе все операции, связанные с локалью, могут одновременно использовать только одну локаль. В результате очень сложно реализовать программы, использующие более одной локали.[6]
Эти функции изменяют поведение printf / scanf / strtod, которые часто используются для записи сохраненных данных в файл или в другие программы. В результате файл, сохраненный в одной локали, не будет читаться в другой локали или не будет читаться. вообще из-за таких предположений, как «числа заканчиваются символами запятой». Большинство крупномасштабных программ принудительно устанавливают языковой стандарт на «C» (или другое фиксированное значение), чтобы обойти эти проблемы.
Пример
#включают <stdio.h>#включают <stdlib.h>#включают <locale.h>int главный(пустота){ / * Перед этим установлен языковой стандарт "C". Этот звонок устанавливает это к «текущему языку», прочитав переменные среды: * / setlocale(LC_ALL, ""); const структура lconv * const currentlocale = localeconv(); printf("В текущем языковом стандарте символ валюты по умолчанию:% s", currentlocale->символ валюты); возвращаться EXIT_SUCCESS;}
Смотрите также
Рекомендации
- ^ ISO / IEC 9899: 1999 спецификация (PDF). п. 204, § 7.11 Локализация.
- ^ Прата, Стивен (2004). C праймер плюс. Самс Паблишинг. Приложение 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.
- ^ "openbsd / src". GitHub. Получено 9 апреля 2018.
- ^ «Стандартный языковой стандарт C и стандартные языковые стандарты C ++». Rogue Wave Software, Inc. 1996 г.