Membaca Kandungan Fail ke dalam Rentetan dalam C dengan Cekap
Sama seperti bahasa skrip seperti Perl, adalah berfaedah untuk dapat mendapatkan semula kandungannya daripada keseluruhan fail dan simpannya dalam pembolehubah tunggal dalam C . Ini boleh memudahkan kod dan meningkatkan prestasi. Dalam siaran ini, kami akan meneroka pendekatan yang paling cekap untuk mencapai objektif ini.
Kaedah tradisional dalam C ialah menggunakan fungsi std::ifstream dan std::getline(). Walau bagaimanapun, ini memerlukan membaca fail baris demi baris secara berulang, yang boleh menjadi tidak cekap untuk fail besar.
Penyelesaian yang lebih cekap ialah menggunakan kelas std::istreambuf_iterator. Kelas ini menyediakan antara muka lelaran ke atas kandungan strim, membolehkan kami membaca keseluruhan strim ke dalam rentetan dalam satu operasi.
Berikut ialah contoh kod yang menunjukkan pendekatan ini:
<code class="cpp">#include <fstream> #include <string> int main(int argc, char** argv) { std::ifstream ifs("myfile.txt"); std::string content((std::istreambuf_iterator<char>(ifs)), (std::istreambuf_iterator<char>())); return 0; }</code>
Dalam kod ini, pembolehubah kandungan dimulakan dengan kandungan fail "myfile.txt." Ungkapan (std::istreambuf_iterator
Sebagai alternatif, anda boleh terus menggunakan kaedah content.assign tanpa membuat pembolehubah rentetan sementara, seperti yang ditunjukkan di bawah:
<code class="cpp">std::ifstream ifs("myfile.txt"); std::string content; content.assign((std::istreambuf_iterator<char>(ifs)), (std::istreambuf_iterator<char>()));</code>
Pendekatan yang dioptimumkan ini mengelakkan overhed membaca secara berulang fail baris demi baris, menjadikannya lebih cekap dengan ketara, terutamanya untuk fail besar.
Atas ialah kandungan terperinci Bagaimana untuk Membaca Keseluruhan Fail menjadi Rentetan dengan Cekap dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!