c - MPFR、printf、小数位、语言环境、文件 i/o 问题

标签 c internationalization floating-point locale

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

我假设这与语言环境有关?

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

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

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

最佳答案

你调用setlocale了吗?如果没有,我会建议通过 setlocale( LC_ALL, "C").

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

关于c - MPFR、printf、小数位、语言环境、文件 i/o 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2168597/

相关文章:

c - 优化二分搜索算法

unsigned->float 转换的 C 舍入,其中 src 与其向上舍入值或向下舍入值的距离相等?

javascript - 如何阻止 JavaScript 从小数点后的数字中删除 0?

email - 我如何大写电子邮件地址?

floating-point - 将 24 位整数快速、便携地转换为 float ,不会丢失任何位

c++ - 这是一个有效的 C I/O 库吗?

c - Microchip 射频调制器问题

c++ - 无论如何有一个 valgrind 消息 "Conditional jump or move depends on uninitialized value"可以是所谓的 'false positive'

grails - 返回自定义验证器错误 Grails

java - 用于不断变化的文本,属性文件的体系结构设置?在Java EE环境中