几周前我问了一个类似的问题,但我卡住了,我真的不知道我是否没有犯任何其他错误。
我现在可以比较清楚地知道我在和什么战斗。
我正在尝试用 C++ 重写一个 VB6 函数。 困难的是这一行:
vector<int>vIntegerValues;
vIntegerValues.resize(iCountIntegers);
fseek(iReadFile, uFromBytePos * sizeof(int), SEEK_CUR);
size_t readElements = fread(&vIntegerValues[0], sizeof(int), iCountIntegers, iReadFile);
我的 VB6 版本是这样的:
Dim vIntegerValues() As Integer
ReDim vIntegerValues(0 To iCountIntegers)
Get #iReadFile, uFromBytePos, vIntegerValues()
但是,C++ 函数用不符合预期的数据填充整数 vector 。
例如,在 VB6 中,第一个值是: 0,0,2,2,0,-2,0,-2,0,2,0,0,-2,
在 C++ 中,第一个值是 131074, -131072, -131072, 131072, 0, 65534
有人看到我哪里出错了可以帮忙吗? 非常感谢。
ps: 我事先不知道 vector vIntegerValues 的大小,所以请不要建议任何带有固定 vector 的东西。这是我会卡住的地方。
最佳答案
您的 VB6 Integer
是 16 位字。使用 int16_t
(或某些平台上的 short int
,包括您的 :) 在 C++ 中获得相同的东西。
关于c++ - 从文件中读取整数时出现错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14439390/