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
Menggunakan std::basic_ifstream
The std::basic_ifstream
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!