📜  C++ freopen()(1)

📅  最后修改于: 2023-12-03 14:39:49.734000             🧑  作者: Mango

C++ 的 freopen() 函数

在 C++ 中,fstream 类通常用于文件的输入输出,但有时我们需要更直接地与文件进行操作,这时候就需要我们使用 C++ 中提供的文件操作函数了。

其中,freopen() 是 C++ 中十分常用的文件操作函数之一。它的作用是将指定的文件与标准输入输出流进行关联,从而改变程序的输入输出形式。

语法

freopen() 函数的语法如下:

FILE *freopen(const char *filename, const char *mode, FILE *stream);

其中,参数含义如下:

  • filename:要打开的文件名
  • mode:文件打开方式。可选值包括 "r"(只读)、"w"(只写)、"a"(追加)等。
  • stream:要关联的标准输入输出流。可选值包括 stdin(标准输入)、stdout(标准输出)、stderr(标准错误输出)等。
示例

下面我们来看一个简单的例子,它演示了如何将输入输出重定向到文件中:

#include <cstdio>

int main() {
    // 将标准输入输出流重定向到文件 "input.txt" 和 "output.txt" 中
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);

    // 以下将从文件中读取输入并输出到文件中
    int a, b;
    while (scanf("%d%d", &a, &b) == 2) {
        printf("%d + %d = %d\n", a, b, a + b);
    }

    // 输出完毕后,将原来的输入输出重定向回终端
    freopen("/dev/tty", "r", stdin);
    freopen("/dev/tty", "w", stdout);

    return 0;
}

在上面的例子中,我们将标准输入输出流重定向到文件 "input.txt" 和 "output.txt" 中,并从文件中读取输入并输出到文件中。注意,在程序结束前,需要将原来的标准输入输出流重定向回终端(即使用 /dev/tty)。

总结

freopen() 是 C++ 中常用的文件操作函数之一,它可以将指定的文件与标准输入输出流进行关联,从而改变程序的输入输出形式。虽然在使用过程中需要略微小心一些,但它仍然是处理输入输出的重要工具之一。