美文网首页
C++ iostream、iomanip 头文件详解

C++ iostream、iomanip 头文件详解

作者: ChungZH | 来源:发表于2018-07-16 19:15 被阅读0次

    欢迎前往我的博客网站:chungzh.cn

    大家好,我是ChungZH!这是我的第二篇博客。在这篇博客中,我将介绍一些有关C++的iostream和iomanip库的知识,希望大家喜欢!


    首先,我们来看看iostream。
    相信大家都知道iostream,这个库可以说是最常用的几个库之一了。iostream库提供了输入输出流。比如cin、cout,都是在iostream里的。所以,我们经常会用到iostream这个库。

    iostream这个名字很好理解,InputOutputStream,输入输出流。

    我们先看看iostream的代码:

    #include <bits/c++config.h>
    #include <ostream>
    #include <istream>
    
    // 由于代码过长,不再继续 
    

    可以看出,iostream自己又引用了istream和ostream这两个头文件。这两个头文件的名字也很好理解,input stream和output stream。

    我们再来分别看看istream和ostream里面又引用了什么:

    istream:

    #include <ios>
    #include <ostream>
    

    ostream:

    #include <ios>
    #include <bits/ostream_insert.h>
    

    这两个头文件都引用了ios,我们继续看看ios的代码:

    #include <iosfwd>
    #include <exception>    
    #include <streambuf>
    

    好了,就到这里吧!其实iostream还引用了很多头文件的,我们不必深究。只知道它引用了istream、ostream和ios就行了。


    iostream库定义了以下三个标准流对象:

    cin表示标准输入(standard input)的istream类对象。cin可以从设备读入数据。

    cout表示标准输出(standard output)的ostream类对象。cout可以向设备输出或者写数据。

    cerr表示标准错误(standard error)的ostream类对象。cerr是导出程序错误消息的地方,它只能允许向屏幕设备写数据。

    其中,cin和cout是比较常用的。cerr相对比较少用。

    这些标准的流对象都有默认的所对应的设备,见下表:

    C++对象名 设备名称 C中标准设备名 默认含义
    cin 键盘 stdin 标准输入
    cout 显示器屏幕 stdout 标准输出
    cerr 显示器屏幕 stderr 标准错误输出

    好了,对于iostream,我们就讲到这里。接下来我们将介绍iomanip。

    iomanip提供了一些格式化输入输出流的函数。io代表输入输出,manip是manipulator(操纵器)的缩写。

    iomanip中比较常用的函数有以下几个:

    setw(int n); 预设输出宽度

    setfill(Char c); 使用c作为填充字符

    setbase(int n); 预设整数输出进制

    setprecision(int n) 用于控制输出流浮点数的精度,整数n代表显示的浮点数数字的精度(使用四舍五入)。

    讲了那么多,还是来个示例吧:

    #include <iostream>   // 标准输入输出流
    #include <iomanip>    // 格式控制
    using namespace std;
    int main()
    {
        double n;
        
        cin >> n;
        // 假设输入:123.45
        
        cout << n << endl;
        // 输出: 123.45 
        
        cout << setprecision(1) << n <<endl     // 控制精度为1,四舍五入后输出 123.5
    
             << setprecision(2) << n <<endl;   // 控制精度为2,四舍五入后输出 123.45
        
        cout << setfill('*') << setw(7) << n << endl;  // 位宽为7,由于n只有6位,所以左边补充一个*,输出    *123.45
    
        
        return 0;
    }
    

    好了,这篇文章就到这里。如果大家有什么疑问,可以在下方的评论区提问,我将会一一解答。

    谢谢大家!


    作者:ChungZH

    审校:玉璇箫

    相关文章

      网友评论

          本文标题:C++ iostream、iomanip 头文件详解

          本文链接:https://www.haomeiwen.com/subject/rczbpftx.html