提问人:one_two_three 提问时间:9/9/2023 最后编辑:genpfaultone_two_three 更新时间:9/9/2023 访问量:66
等同于流输出的 printf %g 标志(例如 std::cout)?
Equivalent of printf %g flag for stream output (e.g. for std::cout)?
问:
如果我需要打印浮点数,我通常使用,因为对我来说,这是最简单和最方便的方法,可以在可能的情况下以人类可读的格式输出浮点数,并自动切换到指数形式过大或过小的值。x
printf("%g", x)
对于类似的输出流,情况就不是那么简单了。比如说,我有类在不更改流的设置的情况下重载。例如:std::cout
point_2d
operator<<
ostream& operator<<(ostream& os, const point_2d& p)
{
os << '(' << p.x << "; " << p.y << ')';
return os;
}
如果我这样做
std::cout << point_2d_instance << std::endl;
输出将采用此时设置的任何格式。std::cout
我无法更改实现,也不知道 的当前状态。我应该设置哪些标志才能获得等效的operator<<
std::cout
std::cout
printf("(%g; %g)", p.x, p.y);
答: 暂无答案
评论
std::defaultfloat
重置格式标志,或先写入字符串,而不是直接使用 on。<<
os
std::defaultfloat
std::ostringstream
std::string
os