Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh mengubah hala kedua-dua Input dan Output Standard ke Fail dalam C?
Serentak Mengubah Input dan Output ke Fail
Seseorang mungkin berhasrat untuk mengubah hala strim input dan output standard ke fail atas sebab yang pelbagai, seperti mengumpul data pengguna atau melakukan pemprosesan kelompok. Artikel ini menyediakan penyelesaian yang komprehensif untuk mencapai ini dalam C .
Penyelesaian
Kod C yang disediakan secara berkesan menunjukkan cara mengubah hala input standard (cin) ke fail yang ditetapkan ("in.txt") dan output standard (cout) ke fail yang ditentukan ("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 }
Untuk mengubah hala kedua-dua input dan output dalam satu baris:
auto cinbuf = std::cin.rdbuf(in.rdbuf()); // save and redirect input
Prinsip ini terpakai pada mana-mana aliran, membenarkan input pengguna dan output program untuk diuruskan dengan mudah.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengubah hala kedua-dua Input dan Output Standard ke Fail dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!