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

Comment rediriger l'entrée et la sortie standard C vers des fichiers externes ?

DDD
DDDoriginal
2024-12-19 00:03:10483parcourir

How to Redirect C   Standard Input and Output to External Files?

Redirection des entrées et sorties vers des fichiers externes

Redirection des entrées de l'entrée standard (cin) et des sorties de la sortie standard (cout) vers des fichiers externes est une technique utile pour tester, déboguer ou analyser le comportement du programme.

Pour rediriger cin vers un fichier spécifié (par exemple, in.txt) :

  • Ouvrez un objet ifstream pour le fichier d'entrée.
  • Enregistrez l'ancien tampon associé à cin en utilisant cin.rdbuf().
  • Redirigez cin vers le tampon du fichier d'entrée en utilisant cin.rdbuf(in.rdbuf()).

Pour rediriger cout vers un fichier spécifié (par exemple, out.txt) :

  • Suivez les mêmes étapes que pour la redirection cin, mais utilisez l'objet ofstream et cout.rdbuf() à la place.

Exemple de code :

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

int main() {
    // Redirect cin to in.txt
    std::ifstream in("in.txt");
    std::streambuf *cinbuf = std::cin.rdbuf();
    std::cin.rdbuf(in.rdbuf());

    // Redirect cout to out.txt
    std::ofstream out("out.txt");
    std::streambuf *coutbuf = std::cout.rdbuf();
    std::cout.rdbuf(out.rdbuf());

    // Read and write to the redirected streams
    std::string line;
    while (std::getline(std::cin, line)) {
        std::cout << line << "\n";
    }

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

Remarque : Vous pouvez également rediriger l'entrée et la sortie sur une seule ligne en utilisant la syntaxe suivante :

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

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