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

Comment puis-je rediriger les flux d'entrée et de sortie standard C vers des fichiers ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-23 00:08:09402parcourir

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

Redirection des flux d'entrée et de sortie vers des fichiers

Pour rediriger l'entrée standard (cin) et la sortie standard (cout) vers des fichiers pour l'entrée et la sortie les opérations, respectivement, suivent ces étapes :

Mise en œuvre :

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

int main() {
    // Open the input and output files
    std::ifstream in("in.txt");
    std::ofstream out("out.txt");

    // Redirect cin and cout to the files
    std::streambuf* cinbuf = std::cin.rdbuf();
    std::cin.rdbuf(in.rdbuf());
    std::streambuf* coutbuf = std::cout.rdbuf();
    std::cout.rdbuf(out.rdbuf());

    // Perform input and output operations
    std::string line;
    while (std::getline(std::cin, line)) {
        std::cout << line << "\n";
    }

    // Reset cin and cout to standard streams
    std::cin.rdbuf(cinbuf);
    std::cout.rdbuf(coutbuf);

    return 0;
}

Explication :

  • Ouvrez les fichiers d'entrée et de sortie à l'aide de std ::ifstream et std::ofstream, respectivement.
  • Enregistrez les tampons actuels de cin et cout en utilisant std::cin.rdbuf() et std::cout.rdbuf().
  • Redirigez cin vers le tampon du fichier d'entrée et cout vers le tampon du fichier de sortie en utilisant std::cin.rdbuf(in. rdbuf()) et std::cout.rdbuf(out.rdbuf()).
  • Effectuer les opérations d'entrée et de sortie comme habituel.
  • Restaurez cin et cout dans leurs tampons d'origine en utilisant std::cin.rdbuf(cinbuf) et std::cout.rdbuf(coutbuf).

Simplifié Redirection :

Vous pouvez également enregistrer et rediriger sur une seule ligne using:

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

Cela définit le tampon de cin sur in.rdbuf() et renvoie l'ancien tampon associé à cin. La même technique peut être utilisée avec std::cout.

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