在c++中对c中的输入输出进行了扩展,採用了面向对象的设计方法设计了c++中的输入输出(IO)。输入输出依照操作的对象分类可分为:1. 标准IO(对计算机的键盘或者显示器进行读写操作)。2. 文件IO(对计算机中的文件进行读写操作);3. 串IO(对内存中的字符串进行读写格式化操作)。

以上三种读写分别存在于头文件iostream,fstream,strstream中。

我们常常称输入输出为输入输出流,之所以称为流。流是内存中连续的以字节为单位的空间。从源流向目的地。流具有状态和相应的操作,流的状态的訪问能够使用bad,fail,eof和good操作来完毕,clear和setstate操作能够用于改变流的状态。

每一个IO对象都会管理一个缓冲区,用于存储读写的数据。缓冲区会在特定的一些情况下被刷新:(1)程序结束(2)缓冲区满了,在写入下一个值时会被刷新(3)显示的刷新,比如endl(4)每次完毕输入输出时,用unitbuf操纵符设置流的内部状态(5)输入输出流关联;

在程序设计中,我们会遇到对多个文件的读写的问题:

string add[4]={"1.dat","2.dat","3.dat","4.dat"};
for(int i=0;i<4;i++)
{
ifstream fin(add[i].c_str());
......
}

以上代码能够对fin不做close操作。也能够顺利完毕读文件。由于在while循环中要又一次定义fin,所以每次定义的fin对象流的状态都是好的。

以上的程序也能够直接使用一个流对象完毕,即将fin的定义移动到while循环的外面,这样读文件的话每次在打开新的文件前要首先关闭文件流。假设不是直接读数据的个数的话而是直到读到文件的尾部,则须要在close之后对文件流对象的状态进行clear才干够。

随机推荐

  1. 界面信息获取库的封装,记有爱UI助手的诞生

    距离上次写文章已经过去了10个月,这次把我最近做的一个东西的一些心得写下来吧. 上一篇文章写了MSAA技术对于QQ界面信息获取的相关知识,近一段时间我把这个技术包括一些其他的功能做了一个封装并准备公开 ...

  2. Action配置

    Action是一个逻辑控制器,并不直接对浏览器生成响应,而是返回指定逻辑视图(一个字符串). 不推荐在Action的name属性值中使用点(.)和中划线(-),有可能会引发一些未知异常.   1使用A ...

  3. mvc验证码

    public string CreateValidateCode(int length) { int[] randMembers = new int[length]; int[] validateNu ...

  4. Uva_11361 Investigating Div-Sum Property

    题目链接 题意: 在[A,B]区间内找出满足条件的数有多少个. 条件:这个数本身 能够整除K, 且各位数字之和能够整除K. 思路: 数据范围过大2^31 2^31 = 2147483648 ~ 2*1 ...

  5. PI数据库的使用-PI System Management Tools

    1.PI连接管理器 2.标记搜索 3.当前值

  6. 解决poi导出Excel异常org.openxmlformats.schemas.spreadshe

    JAVA报表 POI未捕获到 servlet OUTEXCEL 的其中一个服务方法中抛出的异常.抛出的异常:java.lang.NoClassDefFoundError: org.openxmlfor ...

  7. 14.6.5 Configuring InnoDB Change Buffering 配置InnoDB Change Buffering

    14.6.5 Configuring InnoDB Change Buffering 配置InnoDB Change Buffering 当插入,更新,和删除操作在表上执行, 索引列的值(特别是 se ...

  8. [LeetCode#256] Paint House

    Problem: There are a row of n houses, each house can be painted with one of the three colors: red, b ...

  9. bzoj3689

    这题做法很多可以通过类似noi超级钢琴那道题目的做法用可持久化+trie来做还可以直接在trie树上维护size域然后类似查找k大的做法做总之还是比较水的 type node=record kth,n ...

  10. page.Response.WriteFile(newpath);

    page.Response.Clear();            page.Response.ClearHeaders();            page.Response.Buffer = fa ...