C++中文件重定向操作
浏览次数:2793
c++
少儿编程
信息学奥赛
C++ 中的文件重定向操作可以通过将标准输入输出流指向文件来实现。
使用 C 标准库提供的函数进行文件重定向操作。以下是一个示例代码:
#include <cstdio>
int main() {
FILE *input_file = freopen("input.txt", "r", stdin);
FILE *output_file = freopen("output.txt", "w", stdout);
// 从文件中读取输入,将输出写入文件
int a, b;
scanf("%d %d", &a, &b);
printf("The sum of %d and %d is %d\n", a, b, a + b);
// 恢复标准输入输出
freopen("CON", "r", stdin);
freopen("CON", "w", stdout);
return 0;
}
在这个示例中,使用 freopen 函数将标准输入和标准输出分别指向了 input.txt 和 output.txt 文件。与上面的示例不同,这里使用了 C 标准库提供的输入输出函数 scanf 和 printf,而不是 C++ 的输入输出流。
当程序结束时,使用 freopen 函数将标准输入和标准输出恢复为默认值。注意,在 Windows 平台上,需要将 freopen 函数的参数改为 “CON”,而不是 “stdin” 或 “stdout”。
以下是一个示例代码,使用 C++ 的 std::cin 和 std::cout :
#include <iostream>
#include <cstdio>
int main() {
// 打开文件,并将 cin 和 cout 重定向到文件
FILE *input_file = freopen("input.txt", "r", stdin);
FILE *output_file = freopen("output.txt", "w", stdout);
std::ios::sync_with_stdio(false); // 禁用同步机制,提高读写速度
// 从文件中读取输入,将输出写入文件
int a, b;
std::cin >> a >> b;
std::cout << "The sum of " << a << " and " << b << " is " << a + b << std::endl;
// 恢复 cin 和 cout 的默认状态,关闭文件
freopen("CON", "r", stdin);
freopen("CON", "w", stdout);
return 0;
}
在这个示例中,与前面的示例类似,使用 freopen 函数将标准输入和标准输出分别指向了 input.txt 和 output.txt 文件。但是,这里还使用了 std::sync_with_stdio(false) 来禁用 cin 和 cout 的同步机制,从而提高读写速度。
在程序结束时,使用 freopen 函数将标准输入和标准输出恢复为默认值。