【问题标题】:referencing to the ios library in c++ when only using the iostream and iomanip libraries仅使用 iostream 和 iomanip 库时在 C++ 中引用 ios 库
【发布时间】:2020-08-22 14:30:02
【问题描述】:

我想问一个关于 C++ 中 ios 库的问题。

我是 C++ 初学者,正在学习输入/输出流 - iostream

考虑下面的代码:

#include <iostream>
#include <iomanip> // required for manipulators

int main () {
    std::cout << "no boolalpha - default (10 == 10): " << (10 == 10) << std::endl;
    std::cout << "no boolalpha - default (10 == 20): " << (10 == 20) << std::endl;

    // set to true/false formatting
    std::cout << std::boolalpha;
    std::cout << "boolalpha (10 == 10): " << (10 == 10) << std::endl;
    std::cout << "boolalpha (10 == 20): " << (10 == 20) << std::endl;

    // setf method
    std::cout.setf(std::ios::boolalpha);
    std::cout << "boolalpha (10 == 10): " << (10 == 10) << std::endl;
    std::cout << "boolalpha (10 == 20): " << (10 == 20) << std::endl;

    // reset to default 0/1
    std::cout << std::resetiosflags(std::ios::boolalpha);
    std::cout << "Default (10 == 10): " << (10 == 10) << std::endl;
    std::cout << "Default (10 == 20): " << (10 == 20) << std::endl;
    return 0;

我知道我可以通过将std::boolalpha 插入std::out 来切换输出流以显示布尔输出。

不过,我也可以使用setf 方法来切换标志:

std::cout.setf(std::ios::boolalpha);

但是,提供给setf 方法的参数引用了ios 库类,尽管我没有在头文件中导入ios 库。

此代码仍然有效。

为什么会这样?我想我需要声明 &lt;ios&gt; 头文件才能完成这项工作,尽管代码编译得很好。

【问题讨论】:

    标签: c++ include iostream


    【解决方案1】:

    &lt;iostream&gt; 标头包括 &lt;ios&gt;reference

    【讨论】:

    • 哦,所以&lt;iostream&gt; 在头文件中实现时包含&lt;ios&gt;,对吧?
    猜你喜欢
    • 2011-07-16
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    • 2017-09-09
    相关资源
    最近更新 更多