我有自己的io-manipulator准备一个std::ostream
流来打印浮点数:
#include <iostream>
#include <iomanip>
inline std::ostream& my_fmt(std::ostream& os)
{ return os << std::fixed << std::setprecision(2); }
int main()
{
std::cout << my_fmt << 3.146; // It prints 3.15
}
我想知道如何更改我的io-manipulator以强制截断指定的小数位数而不是舍入,这是std::num_put<CharT>::do_put
的默认行为。
例如,在我的代码片段中,我希望程序打印3.14而不是3.15。
我想答案必须是创建我自己的locale
或facet
或其他内容,并通过继承或put
的部分专业化来重新实现std::num_put
功能,但我不确定IO库和区域设置/方面如何协同工作,我不确切知道我必须做什么,或者我需要专门或重新实现什么。