如何将bin文件读取存放到一个vector容器里面,然后每次读取push_back
时间: 2024-11-12 16:42:44 浏览: 17
在C++中,如果你想从bin文件中读取数据并将它们存储在`std::vector`中,可以按照以下步骤操作:
首先,你需要包含必要的头文件并定义一个读取函数,比如使用`std::vector<char>`来存储原始字节数据:
```cpp
#include <fstream>
#include <vector>
// 定义一个辅助函数来读取bin文件的一段数据并添加到vector中
void readBinFileSection(const std::string& filename, std::vector<char>& buffer, size_t offset, size_t size) {
std::ifstream binFile(filename, std::ios::binary);
if (!binFile) {
throw std::runtime_error("Failed to open file");
}
binFile.seekg(offset);
binFile.read(&buffer[0], size);
if (binFile.gcount() != size) {
throw std::runtime_error("Failed to read from file");
}
}
// 主函数
void loadBinFileToVector(const std::string& filename, std::vector<char>& vectorData) {
std::vector<char> temporaryBuffer;
// 分块读取,例如每32KB读取一次
const size_t chunkSize = 32768;
size_t totalBytes = 0;
try {
std::ifstream file(filename, std::ios::binary);
if (!file) {
throw std::runtime_error("Failed to open file");
}
while (!file.eof()) {
readBinFileSection(filename, temporaryBuffer, totalBytes, chunkSize);
vectorData.insert(vectorData.end(), temporaryBuffer.begin(), temporaryBuffer.end());
totalBytes += chunkSize;
}
} catch (const std::exception& e) {
std::cerr << "Error reading file: " << e.what() << std::endl;
}
}
```
上述代码首先创建了一个临时的`std::vector<char>`来存储单次读取的数据,然后根据文件大小分块读取,每读取完一块就将其追加到`vectorData`中。
阅读全文