C++基础(14):文件操作
大家在准备CSP-J/S认证的时候,肯定都在网上不断地做题,刷题。现在,网上大多数的OJ(Online Judge)都是使用标准输入输出(stdin,stdout),即,程序运行后,弹出一个窗口,手动输入内容;回车后,会在同一个窗口输出运行结果。但是在CSP-J/S认证(包括NOI一系列比赛)要求使用文件输入和输出。
这种使用文件的输入、输出方式,可以将硬盘上的文件调入程序,程序运行完成后,生成另外一个文件。这一点在NOI系列比赛中非常重要、非常重要、非常重要!!!如果没有按照要求正确地使用文件进行输入、输出,即使算法完全正确,也不能得分。例如,2020年CSP-J2的题目《优秀的拆分》,C++源程序文件为power.cpp,输入文件名为power.in,输出的文件名为power.out。
下面介绍在NOI比赛中,利用对标准输入输出进行重定向的方式,来读取和写入文件。
大家可以不必纠结什么是重定向,只要记住函数freopen的用法就可以了。函数freopen包含在标准库cstdio中,所以在程序开始必须包含头文件#include<cstdio>。
文件操作基本步骤
1、打开文件,将文件指针指向文件,决定打开文件类型。
2、对文件进行读写操作。
3、使用完文件后,关闭文件。
freopen用法
命令格式
|
|
参数说明
filename:要打开的文件名。
mode:文件打开的模式(读或者写)r/w。
stream:文件指针,通常使用标准流文件(stdin/stdout)。
使用方法
接下来,我们使用freopen函数打开power.in和power.out,其中使用只读模式打开power.in,使用写入模式打开power.out。
|
|
使用freopen函数,不需要修改我们原来使用的输入输出函数scanf、printf、cin和cout,而是维持代码的原样就可以了。freopen函数重定向了标准流,使其指向前面指定的文件,省时省力。最后只要使用fclose关闭输人文件和输出文件即可。
完整的代码模板:
|
|
在平时大家练习的时候,本地调试程序也可以使用文件输入输出。这样做的好处是不需要每次运行程序时,都要用键盘敲一遍输入。只需要在记事本中写好输入数据并保存,每次调试可以直接运行程序,这样节约时间。当然,也可以只重定向输入,这样运行程序后,结果和之前一样显示在弹出窗口中。
- 原文作者:图图爸爸
- 原文链接:https://www.tubacode.com/post/cpp-file.html
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。