Maison >développement back-end >C++ >Comment puis-je rediriger l'entrée et la sortie standard vers des fichiers en 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!