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