Nom*_*meN 10 c++ floating-point double
在C++中,我有一个float/double变量.
当我用例如cout打印时,结果字符串是以句点分隔的.
cout << 3.1415 << endl
$> 3.1415
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法可以强制双重打印逗号?
cout << 3.1415 << endl
$> 3,1415
Run Code Online (Sandbox Code Playgroud)
Éri*_*ant 12
imbue() cout使用locale其numpunctfacet的decimal_point()成员函数返回逗号.
获得这样的locale可以通过几种方式完成.您可以使用系统上可用的命名区域设置(std::locale("fr")可能).或者,您可以派生自己的numpuct,do_decimal_point()在其中实现成员.
第二种方法的示例:
template<typename CharT>
class DecimalSeparator : public std::numpunct<CharT>
{
public:
DecimalSeparator(CharT Separator)
: m_Separator(Separator)
{}
protected:
CharT do_decimal_point()const
{
return m_Separator;
}
private:
CharT m_Separator;
};
Run Code Online (Sandbox Code Playgroud)
用作:
std::cout.imbue(std::locale(std::cout.getloc(), new DecimalSeparator<char>(',')));
Run Code Online (Sandbox Code Playgroud)