MPFR,printf,小数位,区域设置,文件i / o问题

时间:2010-01-30 16:47:13

标签: c internationalization floating-point locale

我的程序的用户报告读取我的程序写入的设置文件时出现问题。我查看了有问题的设置文件,而不是使用句点“.”的小数点,它使用逗号“,”。

我假设这与区域设置有关?

文件i / o使用fprintfmpfr_out_str进行文件输出,getline结合atolatofmpfr_set_str,等文件输入。

我在这做什么?即使机器的语言环境想要使用逗号,我是否应该强制我的程序始终使用句点?如果是这样,我从哪里开始?

编辑:我刚刚注意到在指定要在命令行上使用的设置文件而不是通过GUI加载时会出现此问题 - 这是否表示OP的计算机或我的代码中存在问题?

1 个答案:

答案 0 :(得分:0)

你是否打电话给setlocale?如果没有,我建议在设置文件中强制使用用于生成文件的语言环境强制所有设置文件I / O使用C语言环境,通过之前的setlocale(LC_ALL, "C")建议

另一个选项是使用特定于语言环境的格式化函数(在MSVC中以_l为后缀)并通过_create_locale(LC_ALL, "C")显式创建C语言环境。

相关问题