Gleichzeitiges Umleiten von Ein- und Ausgaben in Dateien
Man kann aus verschiedenen Gründen den Wunsch haben, die Standard-Ein- und Ausgabeströme in Dateien umzuleiten, z Sammeln von Benutzerdaten oder Durchführen einer Stapelverarbeitung. Dieser Artikel bietet eine umfassende Lösung, um dies in C zu erreichen.
Lösung
Der bereitgestellte C-Code zeigt effektiv, wie die Standardeingabe umgeleitet wird (cin) in eine bestimmte Datei („in.txt“) und die Standardausgabe (cout) in eine angegebene Datei ("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 }
Um sowohl Eingabe als auch Ausgabe in einer einzigen Zeile umzuleiten:
auto cinbuf = std::cin.rdbuf(in.rdbuf()); // save and redirect input
Dieses Prinzip gilt für jeden Stream und ermöglicht Benutzereingaben und Programmausgaben bequem zu verwalten.
Das obige ist der detaillierte Inhalt vonWie kann ich sowohl die Standardeingabe als auch die Standardausgabe in Dateien in C umleiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!