把二进制数据写入std::vector<char>有哪些方法
时间: 2025-03-08 21:00:55 浏览: 33
将二进制数据写入`std::vector<char>`有多种方法,以下是几种常见的做法:
### 1. 直接赋值法
你可以直接通过迭代器或下标操作符对`std::vector<char>`中的元素进行逐个赋值。这种方法适合小规模的数据处理。
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<char> vec(5); // 创建一个大小为5的向量
for (size_t i = 0; i < vec.size(); ++i) {
char data = static_cast<char>(i * 2); // 假设这是你要存入的二进制数据
vec[i] = data;
}
return 0;
}
```
### 2. 使用 `insert`
如果你已经有了二进制数据存储在一个数组或者其他容器里,可以利用`insert()`函数一次性插入到指定位置。
```cpp
#include <iostream>
#include <vector>
int main(){
char arr[] = { 'a', 'b', 'c' }; // 源二进制数据
std::vector<char> v(arr, arr + sizeof(arr)/sizeof(char));
// 或者如果想追加到现有vector后面:
//v.insert(v.end(), arr, arr+3);
return 0;
}
```
### 3. 利用流式输入输出(推荐)
对于文件读取等场景下的大规模二进制数据加载,可以直接从输入流读入至`std::vector<char>`。这种方式不仅高效而且简洁明了。
```cpp
#include <fstream>
#include <vector>
#include <string>
void readFileToVector(const std::string& filename, std::vector<char>& buffer){
std::ifstream file(filename, std::ios::binary | std::ios::ate);
if(file.is_open()){
size_t fileSize = file.tellg();
buffer.resize(fileSize);
file.seekg(0, std::ios::beg);
file.read(buffer.data(), fileSize);
file.close();
}
}
// 调用示例
/*
std::vector<char> binaryData;
readFileToVector("example.bin", binaryData);
*/
```
以上就是把二进制数据写入`std::vector<char>`的一些常见方法。选择哪种取决于实际应用场景以及个人偏好。
阅读全文
相关推荐


















