Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengalihkan Input dan Output Standard C ke Fail Luaran?

Bagaimana untuk Mengalihkan Input dan Output Standard C ke Fail Luaran?

DDD
DDDasal
2024-12-19 00:03:10484semak imbas

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

Mengubah hala Input dan Output ke Fail Luaran

Mengubah hala input daripada input standard (cin) dan output daripada output standard (cout) kepada fail luaran ialah teknik yang berguna untuk menguji, menyahpepijat atau menganalisis tingkah laku program.

Untuk mengubah hala cin ke fail yang ditentukan (cth., in.txt):

  • Buka objek ifstream untuk fail input.
  • Simpan penimbal lama yang dikaitkan dengan cin menggunakan cin.rdbuf() .
  • Ubah hala cin ke penimbal fail input menggunakan cin.rdbuf(in.rdbuf()).

Untuk mengubah hala cout ke fail yang ditentukan (cth., out.txt):

  • Ikuti langkah yang sama seperti untuk mengubah hala cin, tetapi gunakan objek aliran dan cout.rdbuf() sebaliknya.

Kod Contoh:

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

Nota: Anda juga boleh mengubah hala kedua-dua input dan output dalam satu baris menggunakan sintaks berikut:

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

Atas ialah kandungan terperinci Bagaimana untuk Mengalihkan Input dan Output Standard C ke Fail Luaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn