有没有人见过一个程序默认使用 Windows 操作系统本地语言环境而不是“C”语言环境(程序是 C++)?
我有一个 C++ 程序,当将双精度转换为字符串时,它将用逗号替换所有十进制符号(最初是点)。
如果我将以下代码插入程序,我只能重现此行为
char* cpSettings = std::setlocale(LC_ALL, ""); // use native locale (Spanish), not C
但是,将点更改为逗号(用于十进制符号)的该程序/软件的版本中没有这行代码,因此默认情况下应使用 c-locale。
该程序仅在特定计算机上将 double 转换为字符串时将点转换为逗号(十进制符号)。
我认为这与语言环境有关,但即使将混乱机器上的语言环境更改回英语(使用点表示小数),程序仍会在双精度字符串转换中用逗号替换点。
问题:我想知道是否有人以前见过这种行为?有谁知道可能导致这种行为的原因是什么?