Maison >développement back-end >C++ >Comment puis-je rediriger l'entrée et la sortie standard vers des fichiers en C ?

Comment puis-je rediriger l'entrée et la sortie standard vers des fichiers en C ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-25 03:07:15462parcourir

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

Redirection simultanée des entrées et des sorties vers des fichiers

On peut souhaiter rediriger les flux d'entrée et de sortie standard vers des fichiers pour diverses raisons, telles que collecter des données utilisateur ou effectuer un traitement par lots. Cet article fournit une solution complète pour y parvenir en C.

Solution

Le code C fourni montre efficacement comment rediriger l'entrée standard (cin) vers un fichier désigné ("in.txt") et la sortie standard (cout) vers un fichier spécifié ("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
}

Pour rediriger à la fois l'entrée et la sortie sur une seule ligne :

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

Ce principe s'applique à n'importe quel flux, permettant l'entrée utilisateur et la sortie du programme à gérer facilement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn