>백엔드 개발 >C++ >표준 입력과 출력을 C의 파일로 어떻게 리디렉션할 수 있습니까?

표준 입력과 출력을 C의 파일로 어떻게 리디렉션할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-25 03:07:15457검색

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으로 문의하세요.