C++中的千位分隔符

12

我想在C++中创建一个具有以下格式的字符串:

string + numbersWithFormatAndThousandSeparator + string

我不确定是使用std::string还是snprintf()提供了像千位分隔符这样的格式。请问有人可以帮助我吗?

4个回答

8

快速简单的方法:

std::ostringstream ss;
ss.imbue(std::locale("en_US.UTF-8"));
ss << 1033224.23;
return ss.str();

该函数将返回字符串"1,033,244.23"。

但是,您的系统需要配置en_US.UTF-8地区设置。


4
这在一台机器上可行,但在另一台机器上失败了(出现“未找到区域设置”之类的错误)。然后我尝试简单地使用 ss.imbue(std::locale(""))。这可行了。我认为 "" 选择了你系统的默认区域设置,希望这就是你和用户想要的。请注意,locale() 失败了(没有千位分隔符)。 - Aaron McDaid


0

有关格式化数字值的信息(包括千位分隔符)可在<clocale>头文件中找到。该头文件提供了一个lconv结构体,其中包含您需要的信息。特别是,该结构体具有一个char *thousands_sep成员,可能正是您所需的。

有关所有详细信息,请参阅struct lconv文档。


0

4
除非我漏掉了什么,lexical_cast不能添加千位分隔符? - James Clark
据我所知,lexical_cast使用当前全局语言环境。因此,如果语言环境中存在千位分隔符,则它们将被正确解析/格式化。 - Georgy Pashkov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接