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

Barbara Streisand
Lepaskan: 2024-11-01 09:52:30
asal
350 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!