2

可能重复:
在 C++ 中从整数中插入和删除逗号

我想在当前语言环境中使用小数分隔符写入双精度值,但我不希望它按当前语言环境中的分组字符进行分组。目前的方法与

stringstream s;
s.imbue(std::locale(""));

只解决其中一个问题。当前输出就像 1,234.567 而不是想要的 1234.567

我怎样才能改变这个?

4

1 回答 1

1

借助 dirkgently 的帖子在 integers 中插入和删除逗号,我创建了以下类:

class no_grouping : public std::numpunct_byname<char> {
    std::string do_grouping() const { return ""; }

public:
    no_grouping() : numpunct_byname("") {}
};

这里重要的是从 numpunkct_byname 派生并使用本地语言环境的构造函数参数 "" 对其进行初始化。

然后可以很容易地为流注入以下代码:

ostringstream stringBuff;
std::locale locale(std::locale(""),new no_grouping);
stringBuff.imbue(locale);

这将删除分组,但它将采用本地语言环境中的小数分隔符。

于 2012-05-22T11:55:30.183 回答