Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Membaca Fail Perduaan dengan Cekap menjadi Vektor Aksara Tidak Bertanda?

Bagaimana untuk Membaca Fail Perduaan dengan Cekap menjadi Vektor Aksara Tidak Bertanda?

Barbara Streisand
Barbara Streisandasal
2024-11-01 09:52:30351semak imbas

How to Efficiently Read a Binary File into a Vector of Unsigned Chars?

Cara Alternatif untuk Membaca Fail Perduaan menjadi Vektor Aksara Tidak Bertanda

Fungsi yang anda sediakan untuk membaca fail binari menjadi vektor tidak bertanda chars ialah pilihan yang berdaya maju, tetapi ia boleh dipermudahkan.

Menggunakan std::istreambuf_iterator

Pendekatan std::istreambuf_iterator adalah ringkas tetapi menganggap penggunaan std::istreambuf_iterator walaupun semasa membaca ke dalam vektor aksara yang tidak ditandatangani.

Menggunakan std::basic_ifstream

The std::basic_ifstream pendekatan secara eksplisit menunjukkan niat untuk membaca BYTE, tetapi tidak jelas sama ada ini adalah pilihan yang paling sesuai.

Pilihan Lain

Pendekatan alternatif yang mengelakkan hantaran eksplisit ke char * ialah:

<code class="cpp">std::vector<BYTE> readFile(const char* filename)
{
    std::ifstream file(filename, std::ios::binary);
    file.unsetf(std::ios::skipws); // Prevent skipping newlines in binary mode
    std::streampos fileSize = file.tellg();
    file.seekg(0, std::ios::beg);

    std::vector<BYTE> fileData;
    fileData.reserve(fileSize);
    fileData.insert(fileData.begin(),
                     std::istream_iterator<BYTE>(file),
                     std::istream_iterator<BYTE>());
    return fileData;
}</code>

Kaedah ini menyimpan kapasiti yang diperlukan dalam vektor sebelum memasukkan data, berpotensi menghapuskan keperluan untuk mengubah saiz yang mahal.

Menyalin Data Perduaan Secara Terus

Pendekatan yang lebih cekap ialah dengan menyalin terus data binari ke dalam vektor tanpa menggunakan lelaran. Walau bagaimanapun, ini memerlukan pelaksanaan khusus platform yang bergantung pada pustaka I/O fail asas.

Pertimbangan Prestasi

Apabila membandingkan prestasi, pertimbangkan untuk menguji fail binari yang besar ke menilai kesan perubahan saiz vektor dan overhed pendekatan yang berbeza.

Atas ialah kandungan terperinci Bagaimana untuk Membaca Fail Perduaan dengan Cekap menjadi Vektor Aksara Tidak Bertanda?. 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