2016-10-04 3 views
4

The Linux Programming Interface С:Является ли стандартная локаль программы в * nix "posix"?

Существуют два различных способа установки языкового стандарта с помощью Setlocale(). Аргумент locale может быть строкой, определяющей одну из локалей, определенных в системе (то есть имя одного из подкаталогов в каталоге/usr/lib/locale), например de_DE или en_US. В качестве альтернативы, локаль может быть указана как пустая строка, что означает, что параметры локали должны быть взяты из переменных окружения:

setlocale (LC_ALL, "");

Мы должны сделать этот вызов, чтобы программа знала переменные среды локали. Если вызов опускается, эти переменные среды не будут влиять на программу.

Так на мой understaning, если моя программа не вызывает setlocale функции в явном виде, моя программа будет использовать по умолчанию locale, который POSIX в *nix системы, не так ли? Я не могу выполнить поиск по указанному документу.

ответ

5

Глядя на the man

7.4 Как программы Установка локали

программа A C наследует свои региональные переменные окружения при запуске. Это происходит автоматически. Однако эти переменные автоматически не контролируют языковой стандарт, используемый библиотечными функциями, поскольку ISO C говорит, что все программы начинаются по умолчанию в стандартном локали C. Чтобы использовать локали, заданные средой, вы должны вызвать setlocale. Назовите это следующим образом:

setlocale (LC_ALL, ""); 

Упор шахта