C+中的千位分隔符+; 我想用C++的形式创建一个字符串: string + numbersWithFormatAndThousandSeparator + string

C+中的千位分隔符+; 我想用C++的形式创建一个字符串: string + numbersWithFormatAndThousandSeparator + string,c++,C++,我不确定是std::string还是snprintf()提供了这样的格式,尤其是千位分隔符。有人能帮我吗?参见所有细节的文档。 < P>在C++中有很多方法可以正确地格式化一个数字。查看本文了解其中的一些内容(boost::lexical_cast是我个人的最爱):快速简便的方法: std::ostringstream ss; ss.imbue(std::locale("en_US.UTF-8")); ss << 1033224.23; return ss.str(); std::

我不确定是
std::string
还是
snprintf()
提供了这样的格式,尤其是千位分隔符。有人能帮我吗?

用于格式化数值的信息(包括千位分隔符)可在
标题中找到。该标头提供一个包含所需信息的
lconv
struct。特别是,该结构具有一个
char*u sep
成员,这可能正是您所需要的


<> P>参见所有细节的文档。

< P>在C++中有很多方法可以正确地格式化一个数字。查看本文了解其中的一些内容(
boost::lexical_cast
是我个人的最爱):

快速简便的方法:

std::ostringstream ss;
ss.imbue(std::locale("en_US.UTF-8"));
ss << 1033224.23;
return ss.str();
std::ostringstream ss;
ss.imbue(标准::语言环境(“en_US.UTF-8”);

ss在一台机器上为我工作,但在另一台机器上失败(“找不到区域设置”)或其他什么。然后我简单地尝试了
ss.imbue(std::locale(“”);
。这很有效。我认为“”为您的系统选择了默认区域设置,希望这就是您和您的用户想要的。请注意,
locale()
失败(没有分隔符)。除非我不知道如何使用,否则lexical_cast不会使用数千个分隔符?AFAIK lexical_cast使用当前全局区域设置。因此,如果区域设置中存在数千个分隔符,它们将被正确解析/格式化。