Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Membaca Bait Fail ke dalam Array Char dalam C Tanpa getline()?

Bagaimana untuk Membaca Bait Fail ke dalam Array Char dalam C Tanpa getline()?

Linda Hamilton
Linda Hamiltonasal
2024-11-02 22:51:02953semak imbas

How to Read File Bytes into a Char Array in C   Without getline()?

Cara Mengambil Bait Fail ke dalam Array Char dalam C

Untuk membaca bait fail ke dalam array char tanpa menggunakan getline(), pertimbangkan menggunakan ifstream::read(). Ikuti langkah berikut:

  1. Buka Fail:

    <code class="cpp">std::ifstream infile("C:\MyFile.csv");</code>
  2. Dapatkan Panjang Fail:

    <code class="cpp">infile.seekg(0, std::ios::end);
    size_t length = infile.tellg();
    infile.seekg(0, std::ios::beg);</code>
  3. Pastikan Saiz Penampan:

    <code class="cpp">if (length > sizeof (buffer)) {
     length = sizeof (buffer);
    }</code>
  4. Baca Fail:

    <code class="cpp">infile.read(buffer, length);</code>

Nota Tambahan:

  • Membuka fail dalam mod binari (cth., dengan std::ios_base:: binari) disyorkan untuk pengendalian bait yang tepat.
  • Walaupun seekg() dan tellg() umumnya boleh dipercayai, mereka mungkin tidak selalu memberikan saiz fail yang tepat dalam sesetengah kes.
  • Untuk membaca keseluruhan fail dalam satu operasi dan mengendalikan fail besar, menggunakan std::vector dan std::istreambuf_iterator mungkin menawarkan lebih fleksibiliti.

Pendekatan Kemas Kini (2019):

Untuk mengambil kira kemungkinan ralat semasa membaca, pertimbangkan pendekatan berikut:

<code class="cpp">size_t chars_read;

if (!(infile.read(buffer, sizeof(buffer)))) {
    if (!infile.eof()) {
        // Handle error during reading
    }
}

chars_read = infile.gcount(); // Get actual number of bytes read</code>

Atas ialah kandungan terperinci Bagaimana untuk Membaca Bait Fail ke dalam Array Char dalam C Tanpa getline()?. 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