首页 >后端开发 >C++ >如何将标准输入和输出重定向到 C 语言中的文件?

如何将标准输入和输出重定向到 C 语言中的文件?

Barbara Streisand
Barbara Streisand原创
2024-12-25 03:07:15494浏览

How Can I Redirect Both Standard Input and Output to Files in C  ?

同时将输入和输出重定向到文件

出于多种原因,人们可能希望将标准输入和输出流重定向到文件,例如收集用户数据或执行批处理。本文提供了在 C 中实现此目的的全面解决方案。

解决方案

提供的 C 代码有效演示了如何重定向标准输入 (cin)到指定文件(“in.txt”)和标准输出(cout)到指定文件("out.txt"):

#include <iostream>
#include <fstream>
#include <string>

void f() {
  std::string line;
  while (std::getline(std::cin, line)) {  // input from "in.txt"
    std::cout << line << "\n";  // output to "out.txt"
  }
}

int main() {
  std::ifstream in("in.txt");
  std::streambuf *cinbuf = std::cin.rdbuf();  // save old cin buffer
  std::cin.rdbuf(in.rdbuf());  // redirect std::cin to "in.txt"

  std::ofstream out("out.txt");
  std::streambuf *coutbuf = std::cout.rdbuf();  // save old cout buffer
  std::cout.rdbuf(out.rdbuf());  // redirect std::cout to "out.txt"

  std::string word;
  std::cin >> word;  // input from "in.txt"
  std::cout << word << "  ";  // output to "out.txt"

  f();  // call function

  std::cin.rdbuf(cinbuf);  // reset cin to standard input
  std::cout.rdbuf(coutbuf);  // reset cout to standard output

  std::cin >> word;  // input from standard input
  std::cout << word;  // output to standard output
}

在一行中重定向输入和输出:

auto cinbuf = std::cin.rdbuf(in.rdbuf());  // save and redirect input

这个原则适用于任何流,允许用户输入和程序输出方便管理。

以上是如何将标准输入和输出重定向到 C 语言中的文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn