Jump to content

Функции локализации C

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

Обзор функций

[ редактировать ]

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

Функция Описание
установить локаль устанавливает и получает текущую локаль C
локеконв возвращает числовые и денежные данные форматирования текущей локали

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

Функции изменяют поведение printf/scanf/strtod, которые часто используются для записи сохраненных данных в файл или в другие программы. В результате сохраненный файл в одной локали не будет доступен для чтения в другой локали или вообще не будет доступен для чтения из- за таких предположений, как «числа заканчиваются запятыми». Для решения этих проблем в большинстве крупномасштабных программ в качестве локали устанавливается значение «C» (или другое фиксированное значение).

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

int main(void)
{
    /* Locale is set to "C" before this. This call sets it
       to the "current locale" by reading environment variables: */
    setlocale(LC_ALL, "");

    const struct lconv * const currentlocale = localeconv();

    printf("In the current locale, the default currency symbol is: %s\n",
        currentlocale->currency_symbol);

    return EXIT_SUCCESS;
}

См. также

[ редактировать ]
  1. ^ Спецификация ISO/IEC 9899:1999 (PDF) . п. 204, § 7.11 Локализация .
  2. ^ Прата, Стивен (2004). C праймер плюс . Издательство Самс. Приложение B, раздел V: Стандартная библиотека ANSI C с дополнениями C99. ISBN  0-672-32696-5 .
  3. ^ «ИСО/МЭК 9899:201x» (PDF) . 12 апреля 2011 г. с. 181. Архивировано из оригинала (PDF) 29 марта 2018 года.
  4. ^ "locale.h" . utas.edu.au. ​инфосис. Архивировано из оригинала 4 июня 2012 года . Проверено 14 сентября 2011 г.
  5. ^ «openbsd/src» . Гитхаб . Проверено 9 апреля 2018 г.
  6. ^ «Стандартный локаль C и стандартные локали C++» . Rogue Wave Software, Inc., 1996. Архивировано из оригинала 19 февраля 2020 года . Проверено 10 ноября 2011 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: ec680c20aa573bf7eeb291cf47a2db56__1699334880
URL1:https://arc.ask3.ru/arc/aa/ec/56/ec680c20aa573bf7eeb291cf47a2db56.html
Заголовок, (Title) документа по адресу, URL1:
C localization functions - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)