坚持c++,真正掌握c++(2)

在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. 初学python之安装Jupyter notebook

    一开始安装python的时候,安装的是最新版的python3.6的最新版.而且怕出问题,选择的都是默认安装路径.以为这样总不会出什么问题.一开始确实这样,安装modgodb等一切顺利.然而在安装jup ...

  2. MARIADB 在 OPENSUSE 的安装。

    1.MARIADB  在 OPENSUSE  的安装或者升级  (参考 Setting up MariaDB Repositories ) OPENSUSE 从 12.3 版本开始,默认带有 MARI ...

  3. Cocos2d-x内置粒子系统

    从类图中我们可以看到,Cocos2d-x中有内置的11粒子,这些粒子的属性都是预先定义好的,我们也可以在程序代码中单独修改某些属性,我们在上一节的实例中都已经实现了这些属性的设置. 内置粒子系统 内置 ...

  4. 【企业库6】【日志应用程序块】实验2:创建和使用异步Trace Listener

    Lab 2: Create and Use an Asynchronous Trace Listener 实验2:创建和使用异步Trace Listener In this lab, you will ...

  5. WUOJ-ACM :1003&colon; 零起点学算法78——牛牛

    武汉科技大学ACM :1003: 零起点学算法78--牛牛Problem Description牛牛是一种纸牌游戏,总共5张牌,规则如下: 如果找不到3张牌的点数之和是10的倍数,则为没牛: 如果其中 ...

  6. Modbus通讯两种传输方式

    控制器能设置为两种传输模式(ASCII或RTU)中的任何一种在标准的Modbus网络通信.用户选择想要的模式,包括串口通信参数(波特率.校验方式等),在配置每个控制器的时候,在一个Modbus网络上的 ...

  7. Python Learning&colon; 01

    After a short period of  new year days, I found life a little boring. So just do something funny--Py ...

  8. 【Python】【内置函数】

    [fromkeys()] -- coding: utf-8 -- python 27 xiaodeng python之函数用法fromkeys() fromkeys() 说明:用于创建一个新字典,以序 ...

  9. ajax 数据类型结构

  10. IntelliJ IDEA快捷键:Ctrl&plus;Alt&plus;B

    To navigate to the implementation(s) of an abstract method,position the caret at its usage or its na ...

上一篇:用ifconfig命令,只有lo,没有eth0的解决方案


下一篇:ECMAScript 6 学习(二)async函数