首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

MFC 内存储器映射

2013-03-01 
MFC 内存映射我的数据量很大,有很多很多。假设我文件中的数据是这样的。xy1y2y3...1239...2145...........10

MFC 内存映射
我的数据量很大,有很多很多。假设我文件中的数据是这样的。

x    y1     y2    y3  ...
1    2      3     9   ...
2    1      4     5   ...

........

100  2      3     1   ....

......

假设我要提取100所在位置的数据,用内存映射的思路怎么提取啊?

LPVOID MapViewOfFile(HANDLE hFileMappingObject,
DWORD dwDesiredAccess,
DWORD dwFileOffsetHigh,
DWORD dwFileOffsetLow,
DWORD dwNumberOfBytesToMap); 

MapViewOfFile()函数允许全部或部分映射文件,在映射时,需要指定数据文件的偏移地址以及待映射的长度。其中,文件的偏移地址由DWORD型的参数dwFileOffsetHigh和dwFileOffsetLow组成的64位值来指定,而且必须是操作系统的分配粒度的整数倍,对于Windows操作系统,分配粒度固定为64KB。

我想一行一行的操作怎么办啊?


[解决办法]
这个与内存映射有什么关系,映不映射,你的逻辑都是一样的。
如果你存的是字符,那只能一行一行的(当然不是绝对一行,可以一次读取多一点)读取并判断,以便取出指定的行,如果是二进制存储的,则直接移动文件指针到相应的位置即可。
[解决办法]
不就是查询目标数据所在位置的问题吗?方法很多可以用STL也可以直接用CStudioFile类;用一个for循环逐行读取其数据,然后在每一行数据内部CString.find,返回的就是位置。
[解决办法]
用数据,坐标位置作为结构体放到list等中,然后find等

热点排行