回 帖 发 新 帖 刷新版面

主题:请问,如何快速地从大文件里读取数据

txt文件,存的数据,想读到一个double型的数组里。 
试过很多方法: 
1.输入输出流。速度太慢,读一个1000*1000的数组要10秒左右 
2.内存映射。先将数据存到一个CString里(这个过程很快),再对这个CString进行拆分,转换为double。但发现拆分的过程更慢,不可接受。 

我想可能的办法就是不将映射到内存的文件存到CString里,直接移动指针读到double数组里。但是不知道怎么操作? 
或者有专家有更好的办法? 

请赐教!!

回复列表 (共1个回复)

沙发

The MapViewOfFile function maps a view of a file into the address space of the calling process. 

To specify a suggested base address, use the MapViewOfFileEx function. 

LPVOID MapViewOfFile(
  HANDLE hFileMappingObject,   // handle to file-mapping object
  DWORD dwDesiredAccess,       // access mode
  DWORD dwFileOffsetHigh,      // high-order DWORD of offset
  DWORD dwFileOffsetLow,       // low-order DWORD of offset
  SIZE_T dwNumberOfBytesToMap  // number of bytes to map
);

我来回复

您尚未登录,请登录后再回复。点此登录或注册