C++保存成员函数setf()的返回值

标签 c++

简单来说

#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/

相关文章:

c++ - 使用 C++ 比较 XML 的变化

c# - 如何在 C# 中释放在 C++ 中分配的内存

C++ 没有函数模板的实例匹配指定的类型

c++ - 在点功能上出现以下错误

c++ - 有一个小部件声明顺序要遵循吗?

c++ - Qt QGraphicsItem 中的 hoverLeaveEvent() 并不总是被调用

c++ - 是否可以确保模板类大小始终为 2 ^ N?

c++ - 使用 g++ 编译 GLFW 代码

c++ - 以编程方式在任何按钮上应用 Qt 鼠标悬停按钮突出显示

c++ - 为什么 cv::Mat 的 RAM 和硬盘大小总是有 4.5 倍的差异?