MPFR, printf, десятичные разряды, локали, проблема ввода / вывода файла - PullRequest
1 голос
/ 30 января 2010

Пользователь моей программы сообщил о проблемах с чтением файла настроек, написанного моей программой. Я посмотрел на файл настроек, о котором идет речь, и вместо десятичных знаков, используя период ".", он использует запятые ",".

Я предполагаю, что это связано с локалями?

Файловый ввод / вывод использует fprintf и mpfr_out_str для вывода файла и getline в сочетании с atol, atof, mpfr_set_str и т. Д. Для ввода файла.

Что мне здесь делать? Должен ли я заставить мою программу всегда использовать точки, даже если локаль машины хочет использовать запятые? Если да, то с чего мне начать?

Редактировать: я только что заметил, что эта проблема возникает при указании файла настроек для использования в командной строке вместо загрузки его через графический интерфейс - это будет указывать на проблему на машине ОП или в моем коде?

1 Ответ

0 голосов
/ 31 января 2010

Вы вообще звоните setlocale? Если нет, я бы предложил встраивать языковой стандарт, используемый для создания файла, в файл настроек или , чтобы все операции ввода-вывода файла настроек использовали локаль C, используя предыдущее предложение setlocale(LC_ALL, "C"). * 1005. *

Еще один вариант - использовать функции форматирования, специфичные для локали (с суффиксом _l в MSVC), и явно создавать локаль C через _create_locale(LC_ALL, "C").

...