Heim >Backend-Entwicklung >C++ >Wie leite ich die C-Standard-Eingabe und -Ausgabe in externe Dateien um?

Wie leite ich die C-Standard-Eingabe und -Ausgabe in externe Dateien um?

DDD
DDDOriginal
2024-12-19 00:03:10475Durchsuche

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

Ein- und Ausgabe in externe Dateien umleiten

Eingabe von der Standardeingabe (cin) und Ausgabe von der Standardausgabe (cout) in externe Dateien umleiten ist eine nützliche Technik zum Testen, Debuggen oder Analysieren des Programmverhaltens.

Um cin in eine bestimmte Datei umzuleiten (z. B. in.txt):

  • Öffnen Sie ein ifstream-Objekt für die Eingabedatei.
  • Speichern Sie den alten Puffer, der mit cin verknüpft ist, mit cin.rdbuf().
  • Cin mit in den Puffer der Eingabedatei umleiten cin.rdbuf(in.rdbuf()).

Um cout auf eine bestimmte Datei umzuleiten (z. B. out.txt):

  • Befolgen Sie die gleichen Schritte wie für die Umleitung von cin, verwenden Sie jedoch das ofstream-Objekt und cout.rdbuf() stattdessen.

Beispielcode:

#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);
}

Hinweis: Sie können Eingabe und Ausgabe auch in einer einzigen Zeile mit umleiten die folgende Syntax:

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

Das obige ist der detaillierte Inhalt vonWie leite ich die C-Standard-Eingabe und -Ausgabe in externe Dateien um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn