C ++ printf с% f, но локализован для страны пользователя - PullRequest
15 голосов
/ 07 октября 2011

Я использую следующий синтаксис C ++ для вывода значения с плавающей запятой на платформе Windows:

printf("%.2f", 1.5);

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

Почему я не вижу его и как получить желаемый результат?

Ответы [ 2 ]

17 голосов
/ 07 октября 2011

Символ радиуса (т. Е. '.' Или ',') определяется текущей локалью.Языковой стандарт по умолчанию (по крайней мере для систем Windows) - «C», что определяет «.»в качестве радикального символа.

Вы можете установить текущую локаль для программы на C / C ++, используя функцию setlocale.

Чтобы установить локаль в текущей локали системы / пользователя, вы можете использоватьследующее утверждение:

#include <locale.h>
setlocale(LC_ALL, ".OCP");

См. здесь (см. примеры на связанной странице ...) для получения дополнительной информации о setlocale

1 голос
/ 07 октября 2011

Попробуйте использовать функцию setlocale () http://www.cplusplus.com/reference/clibrary/clocale/setlocale/

...