在我正在进行的项目中,我链接到一个专有的动态库。只要我运行库的initialize
功能,记录和打印数字的行为就会发生变化。
每隔三位小数插入一次逗号。即
cout << 123456789 << endl
用于打印123456789
,现在打印123,456,789
。这非常令人讨厌,因为这种行为不是我想要的。
经过一番研究后,我怀疑是一个语言环境问题。我在调用initialize
函数
setlocale(LC_ALL,"C");
认为它可能会将我的本地重置为默认值;但无济于事。逗号坚持!!
我错过了什么?
我发布了相关问题here。
答案 0 :(得分:5)
您可以设置流的区域设置,与使用setlocale
设置的区域设置无关。试试std::cout.imbue(std::locale("C"));
答案 1 :(得分:2)
如果您只是想删除逗号,您还可以将当前std::numpunct
替换为可能导致它的默认值,而不会覆盖do_grouping。
std::cout.imbue(std::locale(std::cout.getloc(), new std::numpunct<char>()));