Maison >développement back-end >C++ >Comment puis-je rediriger les fichiers « cin » et « cout » de C vers des fichiers externes ?

Comment puis-je rediriger les fichiers « cin » et « cout » de C vers des fichiers externes ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-27 16:43:10400parcourir

How Can I Redirect C  's `cin` and `cout` to External Files?

Redirection de cin et cout vers des fichiers externes

Pour rediriger les flux d'entrée et de sortie (cin et cout, respectivement) vers des fichiers externes, suivez ces étapes :

#include <iostream>
#include <fstream>

int main() {
    // Open input file for reading
    std::ifstream in("in.txt");
    // Save old input buffer
    std::streambuf *cinbuf = std::cin.rdbuf();
    // Redirect cin to input file
    std::cin.rdbuf(in.rdbuf());

    // Open output file for writing
    std::ofstream out("out.txt");
    // Save old output buffer
    std::streambuf *coutbuf = std::cout.rdbuf();
    // Redirect cout to output file
    std::cout.rdbuf(out.rdbuf());

À partir de ce moment, toute entrée lue depuis std::cin proviendra de "in.txt" et toute sortie écrite dans std::cout sera écrite dans "out.txt".

Pour rediriger sur une seule ligne, utilisez :

auto cinbuf = std::cin.rdbuf(in.rdbuf());

Ceci définit le tampon de std::cin sur in.rdbuf() et renvoie l'ancien tampon pour une utilisation ultérieure. La même technique peut être utilisée pour std::cout (ou tout autre flux).

Enfin, pour restaurer l'entrée et la sortie standard, réinitialisez les tampons :

std::cin.rdbuf(cinbuf);
std::cout.rdbuf(coutbuf);

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