Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Membaca Semua Bait Fail ke dalam Tatasusunan Aksara dalam C?

Bagaimana untuk Membaca Semua Bait Fail ke dalam Tatasusunan Aksara dalam C?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-01 23:09:31840semak imbas

How to Read All File Bytes into a Character Array in C  ?

Mengambil Semua Bait Fail ke dalam Tatasusunan Aksara dalam C

Soalan ini bertujuan untuk memahami cara membaca kandungan fail menjadi aksara tatasusunan, memintas had getline().

Penyelesaian:

Daripada menggunakan getline(), pertimbangkan untuk melaksanakan ifstream::read() untuk membaca fail sebagai aliran bait. Langkah berikut menggariskan proses:

  1. Membuka Fail:
<code class="cpp">std::ifstream infile("C:\MyFile.csv"); // consider std::ios_base::binary for binary reads</code>
  1. Menentukan Panjang Fail:
<code class="cpp">infile.seekg(0, std::ios::end);
size_t length = infile.tellg();
infile.seekg(0, std::ios::beg);</code>
  1. Pencegahan Limpahan Penampan:
<code class="cpp">if (length > sizeof(buffer)) {
    length = sizeof(buffer);
}</code>
  1. Membaca Fail:
<code class="cpp">infile.read(buffer, length);</code>

Nota Tambahan:

  • Menggunakan seekg() dan tellg() untuk menentukan saiz fail tidak dijamin tepat tetapi biasanya berfungsi.
  • Membuka fail dalam mod bukan binari boleh mengakibatkan terjemahan aksara yang mempengaruhi saiz penimbal yang terhasil.
  • Untuk bacaan fail satu tangkapan, jawapan Remy Lebeau mengesyorkan menggunakan std:: vektor dan std::istreambuf_iterator untuk kecekapan yang dipertingkatkan.
  • Sekiranya terdapat bacaan penimbal, pertimbangkan untuk menggunakan gcount() untuk menjejaki bilangan sebenar aksara yang dibaca.

Atas ialah kandungan terperinci Bagaimana untuk Membaca Semua Bait Fail ke dalam Tatasusunan Aksara 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