C локаль вопросы - PullRequest
7 голосов
/ 27 июля 2011

У меня есть несколько вопросов, но я нигде не могу найти прямой ответ.

Итак, в основном, я знаю, что такое локаль, я знаю, как ее использовать (установить), но я не знаю, что это

  1. как работа за сценой, и я бы очень хотел это знать. Итак, когда я использую функции для ввода-вывода, скажем, например, scanf do float, когда мне нужно решить, использовать ли страну десятичную запятую или запятую (я на самом деле от десятичной запятой страна :)),

  2. функция scanf "смотрит", чтобы проверить текущую локаль?

  3. Но если я не установил его в своем коде, создает ли он по умолчанию какую-то стандартную локаль, или ИЛИ получает ее из ОС?

  4. Например, в части кода, когда вы получаете дескриптор для консоли для stdout stderr и stdin?

1 Ответ

5 голосов
/ 27 июля 2011

По умолчанию ваша программа будет иметь локаль C.

Когда вы запустите setlocale(LC_ALL,"");, вы установите локаль из внешней среды (или вы можете установить только части LC_*).

Вызвав setlocale(LC_ALL,"specific_locale");, вы установите конкретную локаль.

Все функции ввода-вывода должны соответствовать текущей локали (стандартные функции CI / O).

Заповедение кода зависит от используемой операционной системы и компилятора.

...