我想在C++中创建一个具有以下格式的字符串:
string + numbersWithFormatAndThousandSeparator + string
我不确定是使用std::string
还是snprintf()
提供了像千位分隔符这样的格式。请问有人可以帮助我吗?
我想在C++中创建一个具有以下格式的字符串:
string + numbersWithFormatAndThousandSeparator + string
我不确定是使用std::string
还是snprintf()
提供了像千位分隔符这样的格式。请问有人可以帮助我吗?
快速简单的方法:
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
地区设置。
有关格式化数字值的信息(包括千位分隔符)可在<clocale>
头文件中找到。该头文件提供了一个lconv
结构体,其中包含您需要的信息。特别是,该结构体具有一个char *thousands_sep
成员,可能正是您所需的。
有关所有详细信息,请参阅struct lconv文档。
C++中有许多正确格式化数字的方法。查看本文以了解其中一些方法(boost::lexical_cast
是我个人最喜欢的):http://www.cplusplus.com/articles/numb_to_text/
ss.imbue(std::locale(""))
。这可行了。我认为 "" 选择了你系统的默认区域设置,希望这就是你和用户想要的。请注意,locale()
失败了(没有千位分隔符)。 - Aaron McDaid