Membaca Kandungan Fail ke Rentetan dalam C dengan Cekap
Dalam C , tidak seperti bahasa skrip seperti Perl, membaca keseluruhan kandungan fail ke dalam rentetan dalam satu operasi tidak tersedia secara langsung. Walau bagaimanapun, terdapat kaedah yang cekap untuk mencapai fungsi ini.
Untuk membaca kandungan fail ke dalam rentetan, kami boleh menggunakan keupayaan pengendalian input fail C. Berikut ialah penyelesaian yang cekap:
<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>
Kod menggunakan aliran fail input untuk membaca kandungan fail bernama "myfile.txt" dan menyimpannya dalam pembolehubah rentetan bernama "kandungan." Ungkapan yang digunakan untuk menetapkan kandungan fail kepada rentetan ialah:
<code class="cpp">std::string content( (std::istreambuf_iterator<char>(ifs) ), (std::istreambuf_iterator<char>() ) );</code>
Ungkapan ini menggunakan iterator untuk membaca aksara demi aksara daripada aliran fail input dan membina rentetan. Peulang pertama dimulakan dengan aliran fail input, manakala peulang kedua ialah peulang "tamat" yang dibina lalai, yang menunjukkan penghujung fail.
Sebagai alternatif, anda boleh menggunakan kod berikut untuk menulis ganti nilai pembolehubah rentetan sedia ada:
<code class="cpp">std::string content; content.assign( (std::istreambuf_iterator<char>(ifs) ), (std::istreambuf_iterator<char>() ) );</code>
Kod ini menimpa nilai "kandungan" pembolehubah rentetan sedia ada dengan kandungan fail.
Atas ialah kandungan terperinci Bagaimanakah saya boleh membaca keseluruhan kandungan fail dengan cekap ke dalam rentetan dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!