Печать
Категория: Главная
Просмотров: 306

Функция setlocale () , упомянутая в уроке на прошлой неделе , возвращает строку текущей локали и устанавливает новую локаль. Нет необходимости вызывать эту функцию для сбора сведений о локали, уже известных вашему компьютеру. Чтобы извлечь эту деталь, используйте функцию localeconv () .

Вот формат:

struct lconv * localeconv(void)

Как и функция setlocale () , localeconv () создается в прототипе locale.hфайла заголовка. Функция не принимает аргументов и возвращает указатель на структуру lconv . Члены этой структуры содержат различные лакомые кусочки, связанные с элементами локализации.

Полный список lconv членов структуры находится по мнению localeconv ()функционального направления мужчина страницы. Они могут отличаться от системы к системе. Некоторые участники могут быть доступны не во всех системах.

Следующий код отображает три члена структуры lconv :

decimal_pointявляется символьным указателем (строкой), представляющим символ (ы) десятичной точки.

thousands_sepявляется символьным указателем (строкой), представляющим символ (ы), используемый для разделения тысяч на большое значение.

currency_symbolявляется символьным указателем (строкой), представляющим символ (ы), используемый для представления денежного значения для локали.

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

int main ()
{
    struct lconv * locale_ptr;

    locale_ptr = localeconv ();

    printf («Десятичная точка:% s \ n», locale_ptr-> decimal_point);
    printf («Разделитель тысяч:% s \ n», locale_ptr-> тысяч_септа);
    printf («Символ валюты:% s \ n», locale_ptr-> currency_symbol);

    Возвращение (0);
}

Поскольку структурная переменная lconvlocale_ptr является указателем, нотация указателя на член структуры используется в строках с 10 по 12. Вот пример выходных данных:

Decimal point: .
Thousands separator:
Currency symbol:

В моей системе точка является десятичной точкой. Два других элемента не определены, поэтому их строки пусты. Этот вывод кажется неутешительным, но я предполагаю, что операционная система, скорее всего, имеет лучшие функции локали. Это, вероятно, то, что большинство программ используют при выводе специфической для региона информации.

Для вашего C-кода функции локали вступают в игру при генерации широких символов. Вы можете прочитать серию этого блога о широких персонажах здесь .