首页 理论教育 C++中学版教你操作stream类的流文件

C++中学版教你操作stream类的流文件

时间:2023-08-13 理论教育 版权反馈
【摘要】:文件输入流和文件输出流的默认输入/输出设备都是磁盘文件。编写程序时需要添加文件流头文件#include,首字母f是“file”的缩写。f1可以认为表示文件的输入缓冲区。注意:f1和f2是流文件类型变量名,可以依照C++的文件命名规定来命名。例11-2文件结束的处理。由于文件名从键盘输入,不能在定义ifstream文件变量时初始化。请注意:例11-1中没有使用close函数,是因为程序运行结束时会自动关闭文件。

C++中学版教你操作stream类的流文件

文件输入流(ifstream)和文件输出流(ofstream)的默认输入/输出设备都是磁盘文件。编写程序时需要添加文件流头文件#include<fstream>,首字母f是“file”的缩写。

若用f1作为输入对象,f2作为输出对象,可以使用如下定义:

例如:

例11-1 输入两个整数a和b,求它们的和。

输入格式(文件:求和.in):输入两个整数,范围是[-100,100]。

输出格式(文件:求和.out):输出一个整数。

输入样例:

输出样例:

程序如下:

说明:

(1)程序第6句定义了一个输入流文件(ifstream)类型变量f1,初始化指向文本文件“求和.in”。

(2)程序第7句定义了一个输出流文件(ofstream)类型变量f2,初始化指向文本文件“求和.out”

(3)程序第9句类似于标准输入流cin,用“>>”从变量f1读入数据。f1可以认为表示文件的输入缓冲区。

(4)程序第10句类似于标准输出流cout,用“<<”将数据输出到变量f2。f2可以认为表示文件的输出缓冲区。

注意:f1和f2是流文件类型变量名,可以依照C++的文件命名规定来命名。

NOI比赛要求数据文件的文件名默认在“当前目录”下,即和程序在同一文件夹里,所以不需要标注目录路径。

程序中没有关闭文件的语句(比如:fi.close(),f2.close()),在程序结束时会自动关闭文件,因此在比赛时可以省略。

例11-2 文件结束的处理。

已知文件中有不超过100个的正整数,计算它们的和。(www.xing528.com)

输入格式(文件sum.in):1行,多个整数,范围是[1,1000]。

输出格式(文件sum.out):输出一个整数。

输入样例:

输出样例:

程序如下:

读者一定注意到了:定义输入流文件类型变量f1、定义输出流文件类型变量f2和定义整型变量x、sum这三个语句写在了“intmain()”的前面,这是C++允许的。这样书写主程序看起来更清晰。

说明:

当数据个数未知时,需要程序判断文件是否结束。可以参照上例设置条件“f1>>x”,如果失败,就返回FALSE,以此来判断文件是否结束,还可以利用eof()函数来进行判断,eof意为“end of file”。

程序如下:

例11-3 从键盘输入文件名和数据,自动生成数据文件。

分析:由于文件名要从键盘多次输入,文件变量不能初始化,打开文件时需要使用open函数,关闭文件时需要使用close函数。

程序如下:

说明:

(1)程序第5行定义了一个输出流文件变量fout。由于文件名从键盘输入,不能在定义ifstream文件变量时初始化。

(2)程序第16、第19行中使用成员函数open打开文件,相当于文件的缓冲区对应到磁盘文件中。由于open的参数是C风格的字符数组,string类型要使用c_str()函数转换。

(3)程序第18、第21行使用close函数关闭文件,即把输出缓冲区的内容复制到文件中。

请注意:例11-1中没有使用close函数,是因为程序运行结束时会自动关闭文件。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈