MPFR, printf, decimal places, locales, file i/o problem
A user of my program has reported problems reading a settings file written by my program. I looked at the settings file in question and instead of decimal points using the period ".
" it uses commas ",
".
I'm assuming this is to do with locales?
The file i/o is using fprintf
and mpfr_out_str
for file output and getline
combined with atol
, atof
, mpfr_set_str
, etc for file input.
What do I do here? Should I force my program to always use periods even if the machine's locale wants to use commas? If so, where do I start?
Edit: I've just noticed that this problem occurs when specifying the settings file to use on the comman开发者_如何转开发d line instead of loading it via the GUI - would this indicate a problem on the OP's machine or in my code?
Do you call setlocale
at all? If not, I would suggest either embedding the locale used to generate the file in the settings file or force all settings file I/O to use the C locale, via the previous suggestion of setlocale(LC_ALL, "C")
.
One other option is to use the locale specific formatting functions (suffixed with _l
in MSVC) and create the C locale explicitly, via _create_locale(LC_ALL, "C")
.
精彩评论