可能重复:
在 C++ 中从整数中插入和删除逗号
我想在当前语言环境中使用小数分隔符写入双精度值,但我不希望它按当前语言环境中的分组字符进行分组。目前的方法与
stringstream s;
s.imbue(std::locale(""));
只解决其中一个问题。当前输出就像 1,234.567 而不是想要的 1234.567
我怎样才能改变这个?
可能重复:
在 C++ 中从整数中插入和删除逗号
我想在当前语言环境中使用小数分隔符写入双精度值,但我不希望它按当前语言环境中的分组字符进行分组。目前的方法与
stringstream s;
s.imbue(std::locale(""));
只解决其中一个问题。当前输出就像 1,234.567 而不是想要的 1234.567
我怎样才能改变这个?
借助 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);
这将删除分组,但它将采用本地语言环境中的小数分隔符。