这可能是一个比较基础的问题,但由于刚开始学习c++,但是对我来说,结构体快速从二进制文件读取数据,给我解决了很大的问题,这里我把方法写出来,和有需要的人分享一下,高手看到了请多包涵。
我的二进制文件是按照结构体规定的格式进行存储的,结构体成员比较多,数据量比较大。结构体结构如下:
struct MY_PARAM{
int m_atten;
double m_vbw, m_rbw;
double m_refPower, m_markerPower;
double m_centerFreqMHz, m_spanMHz, m_startFreqMHz, m_stopFreqMHz, m_markerFreqMHz;
double m_span, m_sweep;
int m_spectrum_points;
int m_iData[1024];
};
读取二进制文件时,如果按照一个数据一个数据去读的话,需要编写非常多重复的代码,执行效率也比较慢。于是我就想有没有办法可以吧从二进制文件读取的数据按照格式直接存放到结构体所在的内存,刚开始我打算用指针,进行内存拷贝,但是尝试了很久没有成功,因为QDataStream好像不支持内存拷贝(个人看法,可能使用方法不对)。
然后我就想其它办法,打算用容器实现,翻书进行查找的时候,突然翻到了共用体,然后就按照书上给的例子进行尝试,最后尝试成功。代码如下:
//#pragma pack(push)
//#pragma pack(1)
union FILE_READBUFFER{
MY_PARAM m_param;
char header_pt[sizeof(m_pa