C++ primer 学习笔记(六)

charpter8 IO库

IO类

  • 基本io类:istream,ostream,cin(iosteam的一个对象),cout(ostream的一个对象)
  • 基本io类2:iostream定义了用于读写流的基本类型,fstream定义了读写命名文档的类型,sstream定义了读写内存string对象的类型。

    iosream: 从流中读写
    fstream:从文档中读写
    sstream:从string中读写

  • 刷新输出缓冲区:endl->输出换行并刷新缓冲区 // flush->刷新 // ends-> 输出空字符并刷新缓冲区

  • 若每次输出操作后都刷新缓冲区,使用unitbuf,接下来的操作都进行一次flush操作。nounitbuf则回到正常的缓冲方式。

    cout<<unitbuf //之后的输出均刷新
    cout<<nounitbuf //回到正常缓冲方式

文档的输入输出

  • 头文档fstream支持文档IO:ifstream 从一个给定文档读取数据,ofstream向一个给定文档写入数据,以及fstream可以读写给定文档。

    基本操作
    fstream my_file; //创建一个未绑定的文档流
    my_file.open(s); //打开名为s的文档:s可以为string或字符串的指针
    my_file.close()
    my_file.is_open() //bool值,指出与my_file关联的文档是否打开
    创建文档流方式:1)未绑定 2)绑定对象并打开fstream my_file(s) 3)绑定并以指定模式打开 fstream my_file(s,mode|mode)

    打开模式mode
    ios::in 为输入(读)而打开文档
    ios::out 为输出(写)而打开文档
    ios::ate 初始位置:文档尾
    ios::app 所有输出附加在文档末尾
    ios::trunc 如果文档已存在则先删除该文档
    ios::binary 二进制方式

  • ofstream 写文档 ifstream 读文档, 若写文档时文档不存在则新建
  • 文档读写操作与cin,cout从控制面板读写类似 举例:

    ofstream out(); 写文档
    out<<”…..”<>s
    char buff[255]; in.getline(buff,100);
    ;>

    Tip: getline 用法(1)若是读进数组,则采用上述方式(2)若读入string data,则直接getline(in,data);

    写文档时,只有当模式为app时,才不会清除原文档。

string流的输入输出

  • sstream 的类型有istringstream、ostringstream、stringstream,分别为读、写、读写
  • sstream strm; //sstream strm(s) 保存string s 的一个拷贝
  • strm.str();//返回strm中的值
  • strm.str(s);// 将s拷贝到strm
  • 注意 strm.str(s)只能赋值一次,若想再赋值,需要strm.clear();

流的条件状态标志

  • 假设s为某个流。如 iostream s // fstream s //sstream s

http://blog.csdn.net/kingstar158/article/details/6859379