c ++:如何使用美元符号将double格式化为货币?

Use*_*ser 3 c++ string currency string-formatting dollar-sign

我有一个函数,它接受一个双精度值并将其作为带有千位分隔符的字符串返回。你可以在这里看到它:c++:用逗号格式化数字?

#include <iomanip>
#include <locale>

template<class T>
std::string FormatWithCommas(T value)
{
    std::stringstream ss;
    ss.imbue(std::locale(""));
    ss << std::fixed << value;
    return ss.str();
}
Run Code Online (Sandbox Code Playgroud)

现在我希望能够将其格式化为带有美元符号的货币。具体来说,如果给定 20500 的两倍,我想得到一个字符串,例如“$20,500”。

在负数的情况下,前置美元符号不起作用,因为我需要“-$5,000”而不是“$-5,000”。

tle*_*nes 5

if(value < 0){
   ss << "-$" << std::fixed << -value; 
} else {
   ss << "$" << std::fixed << value; 
}
Run Code Online (Sandbox Code Playgroud)