使用本地小数点分隔符,但不使用stringstream对字符进行分组

时间:2012-05-21 12:24:57

标签: c++

  

可能重复:
  Inserting and removing commas from integers in c++

我想用当前语言环境中的小数分隔符写双值,但我不希望它按当前语言环境中的分组字符分组。

目前的做法
stringstream s;
s.imbue(std::locale(""));

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

我该如何更改?

1 个答案:

答案 0 :(得分:1)

在dirkgently的帖子inserting and removing commas from 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);

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