使用 C setlocale() 以编程方式更改小数点分隔符

Programmatically changing the decimal separator with C setlocale()

首先,这个必须真正用C来解决,并且用UNIX标准的C函数(因为项目限制)。因此,C++ 或替代库不在问题范围内。

我知道如何使用 setlocale 设置默认用户区域设置,以及设置标准 C/POSIX 区域设置。

但是,我遇到的情况是小数点分隔符是文件指定的,所以我希望我的程序暂时更改小数点分隔符。

LC_NUMERIC 需要一个语言环境名称...但我不想给它一个语言环境名称,而是直接给它分隔符。

如何做到这一点?

嗯,恐怕你不会喜欢这个解决方案:)

首先,由于您使用的是 setlocale,因此您必须提供区域设置名称。因此,在程序执行时应该有一个由您定义的 LC_NUMERIC 属性 的语言环境。因此,您需要定义一个新的语言环境。您可以使用 localedef You may use this doc as a guide for making and using a new locale and this site 定义它以获取源文件,您可以将其用作自定义区域设置定义的模板。