简单来说
#include <iostream>
using namespace std ;
int main()
{
ios_base::fmtflags initial ;
cout << 10 << ' ' << 15.0 << '\n' ;
initial = cout.setf(ios_base::fixed);
cout << 10 << ' ' << 15.0 << '\n' ;
cout.setf(initial);
cout << 10 << ' ' << 15.0 << '\n' ;
return 0;
}
此代码应产生以下输出:
10 15
10 15.000000
10 15
但事实并非如此。它产生的是:
10 15
10 15.000000
10 15.000000
显然,以 initial 作为参数调用 setf 的方法不正确。
有什么问题?
最佳答案
setf
将设置标志,但不会清除它们。所以 setf(ios_base::fixed)
将设置“固定”标志,但 setf(initial)
将保留它。
使用flags
分配所有标志。
cout.flags(initial);
关于C++保存成员函数setf()的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30510303/