C++ 如何使用boost从内存映射文件访问内存块?

C++ 如何使用boost从内存映射文件访问内存块?,c++,boost,io,memory-mapped-files,boost-iostreams,C++,Boost,Io,Memory Mapped Files,Boost Iostreams,我正在尝试读取x,y,z中的一个大文件。通常,它会运行到gbs的数据中。 我已经使用Boost创建了内存映射文件。然而,我仍然不太清楚如何从这个文件中访问一块内存 Boost提供函数char*data(),该函数返回指向缓冲区第一个字节的指针。(我将整个数据作为缓冲区获取)。 有没有一种方法可以让我一块一块地读取数据。理想情况下,我希望以块(比如10000块)的形式读取数据 下面是代码 boost::iostreams::mapped_file_source file; std::string

我正在尝试读取x,y,z中的一个大文件。通常,它会运行到gbs的数据中。 我已经使用Boost创建了内存映射文件。然而,我仍然不太清楚如何从这个文件中访问一块内存

Boost提供函数char*data(),该函数返回指向缓冲区第一个字节的指针。(我将整个数据作为缓冲区获取)。
有没有一种方法可以让我一块一块地读取数据。理想情况下,我希望以块(比如10000块)的形式读取数据

下面是代码

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;
boost::iostreams::映射的\u文件\u源文件;
字符串文件名(“MyFile.pts”);
无符号大小=58678952192;
打开(文件名、大小);
int numBytes=大小*sizeof(float)*3;
cl_浮动3*数据=新cl_浮动3[大小];
float*tmp=(float*)file.data();
对于(int i=0;i
boost::iostreams的行为就像std::basic\u iostream一样 我们可以使用无格式IO

char buff[10000];
file.read(buff,10000);