一个ACM题目的解决背后隐藏着大量的测试,只有自己觉得把自己所能够想到的一切可能都进行输入测试并得到正确答案时才敢尝试提交,毕竟在ACM比赛中是会进行罚时的,宁可多测试几次也不敢武断提交。然而多数题目光测试数据就已经很多了,如果测试时一次一次手动输入那将要耗费大量的时间,将要大大降低A题效率,这时候就体现出了函数freopen();的强大作用啦!
函数的声明:FILE *freopen( const char *filename, const char *mode, FILE *stream );
#include<bits/stdc++.h> using namespace std; int main() { int a,b; freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); while(cin>>a>>b){ cout<<a+b<<endl; } fclose(stdin); fclose(stdout); return 0; }
该代码为从文本文件in中读入数据作为cin的输入数据,将cout所要输出的数据写入到文本文件out,最后需要使用fclose关闭流。
如果是读(r)的话需要先已存在该文本,如果是写(w)的话如果路径下已有该文本,将会对文本先进行清空操作再写入数据,如果没有该文件,将会在该程序存储目录下新建一个该文本,也可在文件名前指定路径如freopen("Debug\\out.txt", "w", stdout);只要路径写对,可以在该工程的任意文件夹下。
在比赛或者日常练习时如果遇到测试数据较多时可直接复制测试数据到读的文件中,修改是也可直接在文本文件中修改,免去了大量的重复工作,十分方便高效。
第一次写博客,肯定有很多不足之处,希望可以慢慢改进,这是一个开始!
原文:https://www.cnblogs.com/ahstu-fl/p/11618346.html