如何在C ++中将大型元数据文件读入数组

时间:2018-06-21 12:03:52

标签: c++ arrays file memory buffer

我目前正在编码一种搜索算法,以查找在视频元数据中找到的特定字节(字符)数组的所有情况。我试图将一个非常大的文件(大约2GB)的所有内容加载到一个数组中,但是由于文件的大小,我在运行程序时不断收到bad_alloc()异常。

我认为一种解决方案是创建一个缓冲区,以“整理”文件的内容,但是我不确定如何进行编码。

到目前为止,我的代码如下:

string file = "metadata.ts";
ifstream fl(file);  
fl.seekg(0, ios::end);  
size_t len = fl.tellg(); 
char *byteArray = new char[len];
fl.seekg(0, ios::beg); 
fl.read(byteArray, len); 
fl.close();

它适用于较小的视频文件,但是当我尝试使用略小于2GB的文件时,它会崩溃并出现bad_alloc()异常。

在此先感谢您的帮助-我愿意接受所有解决方案。

编辑: 我已经检查了Stack OverFlow上的其他解决方案,它们并不是我要找的。我正在尝试“整理”数据并使用缓冲区将其放入数组中,这是其他解决方案所没有的。

0 个答案:

没有答案