我正在尝试适应一些代码,这些代码在一些数据的头部创建一个char*。然后能够一次增加该指针的无符号长度来读取数据。
我被告知一个很好的方法是使用ifstream将文件(位于C:/)读入向量:

std::vector<int8_t>

但我的困惑是,我该如何把每一块文件都拉出乌龙大小。我发布了下面的逻辑,这是与需要该大小数据的硬件通信,因此它们一次遍历size of(ULONG)处的指针,直到读取文件的结尾(通过检查文件大小知道)。我知道我需要把它记在记忆里。。但我该怎么走同样的路
他们的一小段代码如下所示:
char* resData;
res = FindResource(NULL, MAKEINTRESOURCE(fpgaDevice), L"FPGADATA");
  resHandle = LoadResource(NULL, res);
  resData = (char*)LockResource(resHandle);

然后,为了使文件前进,他们将指针前进ULONG的大小:
resData += sizeof(ULONG);

要读取指针,只需使用:
(ULONG*)resData

最佳答案

我假设您的数据是正确的本地格式的二进制数据(我认为这是您的问题所暗示的)。
所以如果你的数据是ULONG,不要使用char指针,使用ULONG指针,如下所示

vector<int8_t> res;
// some code to read into res

// get the underlying data
ULONG* resData = (ULONG*)res.data();

// read a ULONG
ULONG someData = *resData;

// advance to the next ULONG
++resData;

重要的部分是使用data()方法访问矢量数据。

10-08 17:31