freopen函数:
使用不同的文件或模式重新打开流,即重定向
C++

//把一个字符串写入到文件中去:
#include<iostream>
using namespace std;
int main(void)
{
/* redirect standard output to a file */
if(freopen("D:\\out.txt", "w", stdout) == NULL)
fprintf(stderr,"error redirecting stdout\n");
/* this output will go to a file */
printf("This will go into a file.\n");
string s = "12345";
cout<<s<<endl;
int a,b;
while(cin>>a>>b){
cout<<a<<b<<endl;
}
/*close the standard output stream*/
fclose(stdout);
return 0;
}

#include <iostream>
using namespace std;
int main(void)
{
FILE *fp;
fp = freopen("D:\\in.txt","r",stdin); //freopen() 的返回值,如果与文件连接建立失败,返回NULL
if(fp!=NULL){ //与文件连接建立成功
int c;
cin>>c; //从文件中读入数据
cout<<c<<endl; //在屏幕上显示数据
}else{
cout<<"Open Error"<<endl;
}
//输出到控制台“CON”
fp = freopen("CON","r",stdin);
int a, b;
cin>>a>>b;
cout<<a<<b<<endl<<endl;
return 0;
}

#include<iostream>
using namespace std;
int main()
{
freopen("D:\\in.txt", "r", stdin);
freopen("D:\\out.txt", "w", stdout);
int a, b;
while (cin >> a >> b)
cout << a + b << endl;
fclose(stdin);
fclose(stdout);
return 0;
}

#include<iostream>
using namespace std;
int main()
{
int a, b;
freopen("D:\\in.txt", "r", stdin);
freopen("D:\\out.txt", "w", stdout);
while (scanf("%d%d", &a, &b) == 2)
printf("%d\n", a + b);
fclose(stdin);
fclose(stdout);
return 0;
}

#include<iostream>
using namespace std;
int main()
{
int a, b;
freopen("D:\\in.txt", "r", stdin);
freopen("D:\\out.txt", "w", stdout);
while (scanf("%d%d", &a, &b) == 2)
printf("%d\n", a + b);
//fclose(stdin);
//fclose(stdout);
freopen("CON", "r", stdin);
freopen("CON", "w", stdout);
printf("Hello World\n");
scanf("%d%d", &a,&b);
return 0;
}

#include<iostream>
using namespace std;
int main()
{
int a, b;
freopen("D:\\in.txt", "r", stdin);
freopen("D:\\out.txt", "w", stdout);
while (scanf("%d%d", &a, &b) == 2)
printf("%d\n", a + b);
//fclose(stdin);
//fclose(stdout);
freopen("CON", "r", stdin);
freopen("CON", "w", stdout);
printf("Hello World\n");
scanf("%d%d", &a,&b);
return 0;
}
需要注意,这里其实没有真正关闭,只是再次重定向,回到控制台。
在windows/DOS,读文件后用freopen("CON", "r", stdin),写文件后 freopen("CON", "w", stdout)。
在linux中,控制台设备是 /dev/console:freopen("/dev/console", "r", stdin)。
