C++ 对stringstream使用本地小数分隔符,但不使用分组字符

C++ 对stringstream使用本地小数分隔符,但不使用分组字符,c++,C++,可能重复: 我希望像在当前区域设置中一样使用十进制分隔符写入双值,但我不希望它按当前区域设置中的分组字符分组。目前的做法是 stringstream s; s.imbue(std::locale("")); 只解决其中一个问题。当前输出类似于1234.567,而不是想要的1234.567 我怎样才能改变这一点?在Dirkgente的帖子的帮助下,我创建了以下类: class no_grouping : public std::numpunct_byname<char> {

可能重复:

我希望像在当前区域设置中一样使用十进制分隔符写入双值,但我不希望它按当前区域设置中的分组字符分组。目前的做法是

stringstream s;
s.imbue(std::locale(""));
只解决其中一个问题。当前输出类似于1234.567,而不是想要的1234.567


我怎样才能改变这一点?

在Dirkgente的帖子的帮助下,我创建了以下类:

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

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

这将删除分组,但它将使用本地语言环境中的十进制分隔符。

当然,我对另一个问题的回答涉及整数值,但这也适用于
float
s。听起来不错-我会尝试一下。解决方案有效-请在前面提到的线程中直接投票赞成。
ostringstream stringBuff;
std::locale locale(std::locale(""),new no_grouping);
stringBuff.imbue(locale);