在cout中禁用逗号?

时间:2013-06-19 22:15:07

标签: c++ locale cout stringstream comma

在我正在进行的项目中,我链接到一个专有的动态库。只要我运行库的initialize功能,记录和打印数字的行为就会发生变化。

每隔三位小数插入一次逗号。即

cout << 123456789 << endl

用于打印123456789,现在打印123,456,789。这非常令人讨厌,因为这种行为不是我想要的。

经过一番研究后,我怀疑是一个语言环境问题。我在调用initialize函数

后尝试使用这行代码
setlocale(LC_ALL,"C");

认为它可能会将我的本地重置为默认值;但无济于事。逗号坚持!!

我错过了什么?

我发布了相关问题here

2 个答案:

答案 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>()));