Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh mengubah hala C Standard Input dan Output Stream ke Fail?

Bagaimanakah saya boleh mengubah hala C Standard Input dan Output Stream ke Fail?

Patricia Arquette
Patricia Arquetteasal
2024-12-23 00:08:09361semak imbas

How Can I Redirect C   Standard Input and Output Streams to Files?

Mengubah Aliran Input dan Output ke Fail

Untuk mengubah hala input standard (cin) dan output standard (cout) ke fail untuk input dan output operasi, masing-masing, ikut ini langkah:

Pelaksanaan:

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

int main() {
    // Open the input and output files
    std::ifstream in("in.txt");
    std::ofstream out("out.txt");

    // Redirect cin and cout to the files
    std::streambuf* cinbuf = std::cin.rdbuf();
    std::cin.rdbuf(in.rdbuf());
    std::streambuf* coutbuf = std::cout.rdbuf();
    std::cout.rdbuf(out.rdbuf());

    // Perform input and output operations
    std::string line;
    while (std::getline(std::cin, line)) {
        std::cout << line << "\n";
    }

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

    return 0;
}

Penjelasan:

  • Buka fail input dan output menggunakan std ::ifstream dan std::ofstream, masing-masing.
  • Simpan penimbal semasa daripada cin dan cout menggunakan std::cin.rdbuf() dan std::cout.rdbuf().
  • Ubah hala cin ke penimbal fail input dan cout ke penimbal fail output menggunakan std::cin.rdbuf (in.rdbuf()) dan std::cout.rdbuf(out.rdbuf()).
  • Lakukan operasi input dan output seperti biasa.
  • Pulihkan cin dan cout kepada penimbal asalnya menggunakan std::cin.rdbuf( cinbuf) dan std::cout.rdbuf(coutbuf).

Pengalihan Mudah:

Anda juga boleh menyimpan dan mengubah hala dalam satu baris menggunakan:

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

Ini menetapkan penimbal cin kepada in.rdbuf() dan mengembalikan penimbal lama yang dikaitkan dengan cin. Teknik yang sama boleh digunakan dengan std::cout.

Atas ialah kandungan terperinci Bagaimanakah saya boleh mengubah hala C Standard Input dan Output Stream ke Fail?. 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