输入输出库:

       C++本身不包含输入输出功能,C++标准库提供一套用于输入输出的类库

       输入输出库的类层次结构异常复杂,实现结合多态和多重继承机制,利用模版类实现

输入输出库流类层次:

    【知识摘要】面向对象C++---标准库 输入输出类

       1、基类 ios_base 描述类的基本性质,但不考虑流的字符集

       2、basic_ios继承ios_base 描述了类的基本性质,而且描述了流的字符集

       3、派生类basic_istream和basic_ostream继承basic_ios。

       4、basic_iostream对basic_istream和basic_ostream进行多重继承。basic_ifstream basic_istringstream继承basic_istream, basic_ostringstream basic_ofstream继承basic_ostream

       5、basic_stringstream和basic_fstream派生于basic_iostream

输入输出库缓冲类层次:

         输入输出库提供的输入输出功能是带缓冲的输入输出,数据并不直接读入和写出,而是通过缓冲区buffer进行。

         basic_streambuf为基类  basic_filebuf和basic_stringbuf派生于basic_streambuf.

         basic_streambuf包含了用于处理上溢(overflow)和下溢(underflow)虚函数。上溢发生于对已满的缓冲区进行写入操作。下溢发生于对已空的缓冲区进行读取操作。

          缓冲类层次从流类层次中独立使得高层输入输出功能独立于底层输入输出功能。

          通用类集合:ios_base、basic_ios、basci_streambuf、basic_istream、basic_ostream

          字符流类集合: basic_stringbuf、basic_istringstream、basic_ostringstream、basic_stringstream

          文件流类集合:basic_filebuf、basic_ifilestream、basic_ofilestream、basic_filestream

输入输出模板:

        template <class charT, class traits=char_traits<charT>>

         class basic_ios:public ios_base{};

        第一个参数表名字符的数据类型 traits表名字符类型的特性如文件标识符、一个字符晓钰另外一个字符的含义等

         stringstream和filestream均通过char实例化。

  ios_base类: 

         声明fmtflags类型用于定义格式化信息(bitmask),提供成员函数供设置flags()  setf() unsetf()

         定义了流状态标志  badbit  eofbit  failbit  goodbit

         定义了流打开状态标志  app  ate binary in out  trunc

         定义了seek操作哦标志 beg cur  end

   basic_ios类:

         rdstate() clear() setstate good eof  fail  bad()

   basic_istream:

          获取字符get()  获取整行 getline()  从流中读入字符并存储 read() 从流中返回下一个字符 peek

          把字符送入流水 putback 从六种移去指定数量字符 ignore()

          返回上一次用未格式化的输入成员函数读取的字符总数 gcount

          返回输入流的位置 seekg  tellg

           重载>> 读入数据

   basic_ostream

            将字符写入输出流中 put

            将m个字符从字符数组中写入输出流 write

            seekp  tellp

            对缓冲区进行清扫 flush

             重载<<用于输出格式化数据

    操作器:

            操作器是一个函数 可以直接或间接的改变流

            带参操作器:setbase setfill setprecision setw setiosflags  resetiosflags 必须包含iomanip头文件

            无参操作器: hex  endl

    basic_ofstream类

                open  isopen close

    basic_ifstream类

           open  is_open  close

           

   

       

         

相关文章:

  • 2021-06-01
  • 2022-01-11
  • 2021-06-07
  • 2022-02-15
  • 2022-12-23
  • 2022-12-23
  • 2022-02-04
  • 2021-08-28
猜你喜欢
  • 2021-06-24
  • 2022-12-23
  • 2021-10-17
  • 2021-05-10
  • 2021-11-30
相关资源
相似解决方案