簡體   English   中英

如何使用boost從內存映射文件訪問內存塊?

[英]How to access chunk of memory from memory mapped file using boost?

我試圖讀取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;

boost :: iostreams的行為就像std :: basic_iostream我們可以使用未格式化的IO

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM