我正在尝试读取x,y,z中的大文件。通常它会遇到gbs的数据。 我使用Boost创建了内存映射文件。但是,我仍然不清楚如何从这个文件中访问一块内存。
Boost提供函数char * data(),它返回指向缓冲区第一个字节的指针。(我将整个数据作为缓冲区)。
有没有办法可以通过块读取数据块。理想情况下,我想以10,000个块的形式读取数据。
以下是代码。
boost::iostreams::mapped_file_source file;
std::string filename("MyFile.pts");
unsigned size = 58678952192;
file.open(filename, size);
int numBytes = size*sizeof(float)*3;
cl_float3 *data = new cl_float3[size];
float * tmp = (float*)file.data();
for(int i = 0; i < size;i++)
{
data[i].x = tmp[i*3];
data[i].y = tmp[i*3+1];
data[i].z = tmp[i*3+2];
}
delete[] tmp;
答案 0 :(得分:1)
boost :: iostreams就像std :: basic_iostream一样 我们可以使用未格式化的IO
char buff[10000];
file.read(buff,10000);