【发布时间】:2020-08-19 10:40:51
【问题描述】:
首先,我想在下面向您展示我的代码。
#include<iostream>
int main()
{
float num = 3;
std::ios_base::fmtflags initial;
initial = std::cout.setf(std::ios_base::fixed);
std::cout.setf(initial);
std::cout<<num;
}
输出为 3.000000。只有第一行和最后一行输出为 3。我的书说“setf() 方法返回所有在 打了电话。 std::ios_base::fmtflags 是存储它所需的类型的花哨名称 信息。所以对 initial 的赋值存储了之前的设置 调用了 setf 函数。然后可以将初始变量用作 setf() 的参数,以将所有格式设置重置为此原始值。”但正如您所见,它不起作用。有什么问题?
【问题讨论】:
-
这并没有解决问题,而是养成使用有意义的值初始化对象的习惯,而不是使用默认值创建它们并立即覆盖默认值。在这种情况下,这意味着将
std::ios_base::fmtflags initial; initial = std::cout.setfstd::ios_base::fixed);更改为std::ios_base::fmtflags initial = std::cout.setfstd::ios_base::fixed);。