• C++ Input & Output


    1.C++ I/O各类之间的继承关系图

    参考网址:

      http://www.cplusplus.com/reference/iolibrary/

    Note:

      在程序中包含iostream文件将自动创建8个流对象(4个用于窄字符流, 4个用于宽字符流),如下:

    cin  --标准输入流,该流被关联到标准输入设备(通常为键盘)    ----> wcin

    cout  --标准输入流,该流被关联到标准输出设备(通常为显示器)    ----> wcout

    cerr   --标准错误流,类似cout,但cerr流没有缓冲区        ----> wcerr

    clog  --标准错误流,类似cerr,但clog流拥有缓冲区        ----> wlog

      由上图可知,cin 是一个istream对象,拥有istream的相关成员函数; cout是一个ostream对象,拥有ostream的相关成员函数和数据成员

    2.I/O 常见的成员函数

    对于istream类而言,其常见的成员函数如下(以cin对象实例):

      istream::get

        --istream对get方法进行了重载,常见的调用get的形式有4种,如下:

          1) int get();    //读取下一个字符,返回该字符的ascii码

          2) istream & get(char & c);  //读取下一个字符,并将其赋值给字符变量 c

          3) istream & get(char *  s, streamsize n);  //从输入流中读取指定大小的字节(参数n),并存储到s所指向的地址空间中

          4) istream & get(char * s, streamsize n, char delim);  //冲输入缓冲区中读取n字节,并存储到s指向的存储空间中

        Note:

          1) get的第3种形式和第4种形式,均读区最多n字节的内容;不同之处在于

          istream & get(char *  s, streamsize n);在读取n字节或遇到换行符时,停止读取

          istream & get(char * s, streamsize n, char delim);在读取n字节或遇到delim指定的分隔符时停止读取

          形式3相当于如下的形式4样式:

          get(char *  s, streamsize n) ----> get(char * s, streamsize n, ' ');

          2) get的后两种形式中,当读取的字符超过n指定的值时,get不会重置流状态

      istream::getline

        istream & getline(char * s, streamsize n);

        istream & getline(char * s, streamsize n, char delim);

        Note:

          getline 与 get都可以用来读取一行输入,不同在于

        1) getline读取一行时,连同换行符' '一起从输入流中读取,然后丢弃 ,在读取的字符最后加上空字符,以表示字符串结尾

         get不会读取 换行符, 依然保留在输入流中,以备后续的读取

        2) getline读取超过n个字节时,重置流状态,设置failbit等流标志位;get函数则不会进行该操作

        

      istream::ignore

        istream & ignore(streamsize n, char delim = EOF);      //提取并丢弃字符

      istream::gcout

        streamsize gcount() const;        //获取最后一次非格式化读取的字节数

      istream::peek

        int peek();          //查看输入流中下一个字符,返回该字符的ascii码

      Note: peek仅仅查看,并不从输入流中读取字符

      istream::putback

        istream  & putback(char c);      //将字符c放回输入流中(插入到输入流中,以备下一次读取)

      istream::read

        istream & read(char * s, streamsize n);    //从输入流中读取n字节,并存储到s指定的存储空间中

      其他:tellg , seekg            //用于输入流定位的函数

    对于ostream类而言,其常见的成员函数如下(以cout对象实例):

      ostream::put

        ostream & put(char c);      //将字符c插入到输出流中,即打印字符c

      ostream::write

        ostream & write(const char * s, streamsize n);    //将s从的前n个字节插入到输入流中

      其他:

        tellp, seekp            //用于输出流定位的函数

        flush                 //刷新输出流

    3.文件操作

      ifstream::open

        void open(const char * filename, ios_base::openmode mode = ios_base::in);  //打开filename文件,并将它与ifstream对象关联

        void open(const string & filename, ios_base::openmode mode = ios_base::in);

      ifstream::is_open

        bool is_open() const;    //检测文件是否与ifstream对象关联

      ifstream::close

        void close();        //关闭ifstream对象与文件的链接

      ofstream::open

        void open(const char * filename, ios_base::openmode mode = ios_base::out);

        void open(const string & filename, ios_base:openmode mode = ios_base::out);

      其他:ofstream::is_open, ofstream::close与ifstream相同

      Note:

        1) ios_base::openmode指定了打开文件的模式,常见的模式有:

        ios_base::app      //append

        ios_base::ate      //at end

        ios_base::in       //input

        ios_base::out      //output

        ios_base::trunc     //truncate

        ios_base::binary     //binary

        2)可将多个openmode通过 | (与运算)进行组合,如:

          ios_base::out|ios_base::trunc

      

      

  • 相关阅读:
    JS循环语句作业讲解(折纸、兔子生兔子、买东西组合)
    JavaScript If...Else 语句
    一个用纯CSS实现的下拉菜单
    form表单练习
    CSS样式表
    form表单的属性标签
    form表单的属性标签和练习
    HTML基础标签入门
    学习目标
    Oracle表格建立
  • 原文地址:https://www.cnblogs.com/tesion99/p/cppio001.html
Copyright © 2020-2023  润新知