21xrx.com
2024-05-20 08:35:48 Monday
登录
文章检索 我的文章 写文章
C++如何读取二进制文件并存入vector?
2023-07-05 12:15:29 深夜i     --     --
C++ 读取 二进制文件 存入 vector

C++是一种流行的编程语言,有许多优秀的特征,如可移植性,内存管理等。在C++中,有时需要读取二进制文件并存入vector中。本文将介绍如何实现这一过程。

首先,需要使用C++中的文件操作函数来打开文件。可以使用fstream库提供的ifstream类来读取二进制文件。在打开文件时,必须明确指定打开模式和文件名,示例如下:

std::ifstream infile("binaryfile.bin", std::ios::binary | std::ios::in);

文件打开后,需要确认文件是否打开成功。可以使用if语句来检查文件是否被正确打开,如下:

if(!infile.is_open())

  std::cout << "文件打开错误" << std::endl;

接下来,需要确定二进制文件的大小。可以使用seekg函数和tellg函数来获取文件的大小。示例代码如下:

infile.seekg(0, std::ios::end);

file_size = infile.tellg();

infile.seekg(0, std::ios::beg);

需要注意的是,文件大小信息需要在从文件中读取数据之前进行获取。

然后,我们需要使用C++中的vector类来存储文件数据。可以使用emplace_back函数向vector中添加数据。在添加数据时,需要确定每次读取的数据量,以及文件是否已读取完毕。示例如下:

std::vector buffer(file_size);

while (infile.read(buffer.data(), buffer.size()))

{

  for (auto it = buffer.begin(); it != buffer.end(); ++it)

  {

    vec.emplace_back(*it);

  }

}

最后需要关闭文件并释放内存,代码如下:

infile.close();

vec.shrink_to_fit();

这里shrink_to_fit函数是C++11中引入的函数,用于将vector的容量缩小为实际存储元素所需的大小,从而节省内存。

总的来说,读取二进制文件并存入vector中是C++编程中的常见任务。通过使用fstream库和vector类,可以方便地实现这一过程。需要注意的是,如果读取的文件很大,应该考虑分块读取以减少内存占用。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复