C++文件操作之freopen

作为一个OIer,文件操作是很重要的。
如果没有文件操作或文件操作被注释,等待着你的就是爆零的命运。
C和C++的文件操作,一般是用fopen或fstream,但在OI里,我们用freopen,即文件重定向。
它的用法其实也挺简单。


包含库:cstdio(stdio.h)
函数原型:

FILE *__cdecl freopen(const char * __restrict__ _Filename,const char * __restrict__ _Mode,FILE * __restrict__ _File) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;

参数:
_Filename:要打开的文件名。
_Mode:打开方式,同fopen。
_File:一个FILE型指针,可以是stdin(标准输入)或stdout(标准输出)。

好像很复杂的样子。其实就是像这样:

freopen("xxx.in","r",stdin);	//输入文件
freopen("xxx.out","w",stdout);	//输出文件

然后其他的代码按原样写就可以了。

接下来是实例代码:

#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
	freopen("a+b.in","r",stdin);
	freopen("a+b.out","w",stdout);
	//以上是模板
	int a,b;
	cin>>a>>b;
	cout<<a+b<<endl;
	return 0;
}

运行结果:
在这里插入图片描述
如果你是一个OIer,文件操作模板请烂熟于心。
写代码时可以把文件操作加上注释。
但是,记住:提交代码时一定要把注释打开!


That’s all~

彩蛋:小技巧

#include<cstdio>
#include<iostream>
using namespace std;
string FILENAME="FILENAME";	//FILENAME 是要求的文件名去掉.in/.out后的部分
							//如要求打开a+b.in/a+b.out FILENAME就是a+b
int main()
{
	freopen((FILENAME+".in").c_str(),"r",stdin);
	freopen((FILENAME+".out").c_str(),"w",stdout);
	//do sth.
	return 0;
}

实例:

#include<cstdio>
#include<iostream>
using namespace std;
string FILENAME="a+b";
int main()
{
	freopen((FILENAME+".in").c_str(),"r",stdin);
	freopen((FILENAME+".out").c_str(),"w",stdout);
	int a,b;
	cin>>a>>b;
	cout<<a+b<<endl;
	return 0;
}
  • 13
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值