std::cin >> setprecision(n)的作用是什么?为何可用于输入流?
关于
std::setprecision作用于输入流的疑问 cppreference说明:
当在表达式
out << setprecision(n)或in >> setprecision(n)中使用时,会将流out或in的精度参数设置为n。
该页面仅展示了它与std::cout搭配使用的示例。
页面还提到,对于输入流,str >> setprecision(n)等效于调用str.precision(n),但这么做的实际作用是什么?std::cin >> setprecision(n)到底能产生什么效果?
例如以下代码:
#include <iostream> #include <iomanip> int main() { double d; std::cin >> std::setprecision(1) >> d; std::cout << d << "\n"; std::cin >> std::fixed >> std::setprecision(2) >> d; std::cout << d << "\n"; }
输入内容:
3.12 5.1234
输出结果:
3.12 5.1234
看起来这个操作完全没有效果。查阅std::ios_base::precision的说明,也明确精度设置仅对输出流有意义:
管理
std::num_put::do_put执行的浮点输出精度(即生成的数字位数)。
既然str.precision(n)仅影响输出,为何std::setprecision可以传入std::istream::operator>>?
内容的提问来源于stack exchange,提问作者463035818_is_not_an_ai
相关产品推荐
相关产品推荐

