如何快速的从大内存块中读取特定的数据?跪求大神T_T
我用二进制打开一个文件,从中读取了150*1024个字节。这堆数据中前几十个字节是说明性的,大小分别为:WORD,WORD,DWORD,DWORD,LONG ,LONG,WORD... ...有的是字符,有的是整型。我现在的解决办法是这样的:
- C/C++ code
//... ...char *p_buf = new char[150*1024];infile("data",ios_base::binary|ios_base::in);infile.read(p_buf,150*1024);char a[2];//char b[2],c[4],d[4]............for(int i = 0 ; i < 2 ; i++){ a[i] = p_buf[i];}//for(int ....)....for()....for()....int *p_a = (int*)(a);//... ...我觉得这样太慢了,这个办法不太好,而且那个强制转换感觉上去也不好。求大神指导啊!
[解决办法]
用内存映射
[解决办法]
如果知道前面说明性的字节的长度,直接用fseek
内存映射后,再偏移
[解决办法]
先定义一个结构体来接收这些数据吧,然后想使用哪一个的时候再转
[解决办法]
_lseeki64
[解决办法]
这种读法只能seek了,参照vector的源码去做。
[解决办法]
可以定义个结构体,将各个成员对应到这些数据。
直接从结构体成员变量中判断值。
[解决办法]
fseek or _lseeki64 移动文件指针