Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В вычислении , функция локализации C представляют собой группа функций в языке программирования , реализующий базовые процедуры локализации. [1] [2] Функции используются в многоязычных программах для адаптации к конкретному языку. В частности, можно изменить способ отображения чисел и валюты. Эти настройки влияют на поведение функций ввода / вывода в стандартной библиотеке C. [3]

Обзор функций [ править ]

Функции и типы локализации C определены в locale.h ( заголовок clocale в C ++). [4] [5]

Критика [ править ]

Стандартные функции локализации 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 ; }

См. Также [ править ]

Ссылки [ править ]

  1. ^ ISO / IEC 9899: 1999 спецификация (PDF) . п. 204, § 7.11 Локализация .
  2. ^ Прата, Стивен (2004). Праймер С плюс . Самс Паблишинг. Приложение B, раздел V: Стандартная библиотека ANSI C с дополнениями C99. ISBN 0-672-32696-5.
  3. ^ «ISO / IEC 9899: 201x» (PDF) . 12 апреля 2011. с. 181. Архивировано из оригинального (PDF) 29 марта 2018 года.
  4. ^ "locale.h" . utas.edu.au . инфосис . Проверено 14 сентября 2011 года . CS1 maint: обескураженный параметр ( ссылка )
  5. ^ "openbsd / src" . GitHub . Проверено 9 апреля 2018 .
  6. ^ «Стандартные локали C и стандартные локали C ++» . Rogue Wave Software, Inc. 1996 г.