使用fstream将文件读入单独的变量效率最高

时间:2011-07-14 15:55:35

标签: c++ binaryfiles fstream

我有大量的文件看起来有点像:

12-3-125-BINARYDATA

123125保存为单独的整数变量,将BINARYDATA保存为char-vector的最有效方法是什么?

我真的很想使用fstream,但我并不确切知道如何(让它与std::strings一起使用,但BINARYDATA部分全部搞砸了)。

2 个答案:

答案 0 :(得分:1)

读取数据的最有效方法是使用最少的I / O函数调用读取许多“块”或记录到内存中,然后解析内存中的数据。

例如,通过一次fread调用读取5条记录比调用fread的5条调用更有效。访问内存总是比访问文件等外部数据更快。

某些平台具有内存映射文件的能力。这可能比读取使用I / O功能更有效。分析将确定最有效的。

固定长度记录总是比可变长度记录更有效。可变长度记录涉及读取直到读取固定大小或读取直到找到终端(标记)值。例如,文本行是变量记录,必须一次读取一个字节,直到找到终止的行结束标记。在这种情况下,缓冲可能有所帮助。

答案 1 :(得分:0)

二进制数据是什么意思?它是一个010101000 char by char还是“真正的”二进制数据?如果它们是真正的“二进制数据”,只需将文件读取为二进制文件即可。首先读取第一个int的2个字节,接下来的1个字节用于 - ,2个字节用于3,依此类推,直到你读取第一个二进制数据位置,只读取文件长度并读取所有数据。