Функция 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-кода функции локали вступают в игру при генерации широких символов. Вы можете прочитать серию этого блога о широких персонажах здесь .