Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh membaca keseluruhan kandungan fail dengan cekap ke dalam rentetan dalam C ?

Bagaimanakah saya boleh membaca keseluruhan kandungan fail dengan cekap ke dalam rentetan dalam C ?

Patricia Arquette
Patricia Arquetteasal
2024-10-27 06:45:29695semak imbas

How can I efficiently read the entire contents of a file into a string in C  ?

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!

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