c++ - C ++将整个二进制文件读入char数组
问题描述
我需要读取二进制文件的全部内容并将其传递给我的方法,该方法接收一个 char 数组作为输入。我对选角有疑问:
infile.open(argv[1], std::ios::binary);
infile.seekg(0, std::ios::end);
size_t file_size_in_byte = infile.tellg();
std::vector<char> data;
data.resize(file_size_in_byte);
infile.seekg(0, std::ios::beg);
infile.read(&data[0], file_size_in_byte);
现在如何将向量转换为 char 数组而不会出现安全内存错误?
解决方案
&data[0]
实际上是你的演员。只要您的向量没有超出范围,您就不会释放该指针,也不会超过file_size_in_byte
/ data.size()
。您可以安全地阅读它。喜欢:
char* data_ptr = &data[0];
for(int i = 0; i < file_size_in_byte; i++)
{
// do something with data_ptr[i]
}
或将其传递给函数,如下所示:
char* data_ptr = &data[0];
process_file_data(data_ptr, data.size());
或者,正如灰熊在下面的评论中提到的那样,只需使用:char * data_ptr = data.data();
推荐阅读
- javascript - 何时调用 navigator.registerProtocolHandler
- python - 将图像划分为块并获取一个像素的块索引
- woocommerce - 如何更改 WooCommerce 中“添加到购物车”按钮中的默认文本?
- java - 为什么在尝试使用 Launch4J 生成 .exe 时出现此异常?
- c++ - 没有堆的 c++ 多态性
- python - 当我输入 1 时,它会执行功能但不会循环。当我输入 2 时,它会执行功能和循环。为什么第一个不循环?
- sql - 将记录插入索引视图使用的表中的性能问题?
- python - 如何在变量中管理 HTML 代码?
- php - 无法在 WordPress 的数组上使用 implode() 设置逗号分隔符
- postgresql - 连接到 postgresql 服务器时,如何在 psql 命令行中设置 rejectUnauthorized=false?