C++ 从文件中读取整数时的值错误

C++ 从文件中读取整数时的值错误,c++,C++,几周前我问了一个类似的问题,但我被卡住了,不知道自己是否犯了其他错误 我能比较清楚地说出我现在在与什么作斗争 我试图在C++中重新编写一个VB6函数。 困难的是这一条: vector<int>vIntegerValues; vIntegerValues.resize(iCountIntegers); fseek(iReadFile, uFromBytePos * sizeof(int), SEEK_CUR); size_t readElements = fread(&v

几周前我问了一个类似的问题,但我被卡住了,不知道自己是否犯了其他错误

我能比较清楚地说出我现在在与什么作斗争

我试图在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); 
<>但是C++函数用不符合预期的数据填充整型向量。

例如,在VB6中,第一个值是: 0,0,2,2,0,-2,0,-2,0,2,0,0,-2

<>和C++中的第一个值是 131074,-131072,-131072131072,065534

当他看到我的错误时,有人能帮忙吗? 多谢各位


ps:我事先不知道向量VintegerValue的大小,所以请不要建议使用固定向量。这就是我被卡住的地方。

您的VB6
整数是16位字。使用<代码> IN1616T (或代码>短INT/COME)在某些平台上,包括您的:)在C++中得到相同的东西。

< P>您的VB6<代码>整数< /Cord>S是16位字。使用<代码> IN1616T (或代码>短INT/COM>在一些平台上,包括你的):在C++中得到同样的东西。

< p>查看数字的大小,你正在把16位数字读入32位字段。将数据类型定义为
short int
,并相应地修改代码。

查看数字的大小,您正在将16位数字读入32位字段。将数据类型定义为“代码>短INT/CODE”并相应地修改代码。

如果使用C++,为什么使用“代码> fDebug < /C>”和“代码> FRAD < /COD>而不是库?文件是文本文件还是二进制文件?它是以文本模式还是二进制模式打开的?看起来使用了不同的
int
定义-您的平台上的
sizeof(int)
是什么-它是您期望的吗?我以这种方式打开文件:file*iReadFile;iReadFile=fopen(filename.c_str(),“rb”);我使用fseek和fread而不是iostream,因为我对iostream没有经验,我担心我的代码会更糟。文件是二进制文件。如果使用C++,为什么使用<代码> fDest< <代码>和<代码> FRAD 而不是库?文件是文本文件还是二进制文件?它是以文本模式还是二进制模式打开的?看起来使用了不同的
int
定义-您的平台上的
sizeof(int)
是什么-它是您期望的吗?我以这种方式打开文件:file*iReadFile;iReadFile=fopen(filename.c_str(),“rb”);我使用fseek和fread而不是iostream,因为我对iostream没有经验,我担心我的代码会更糟。该文件是一个二进制文件。
Dim vIntegerValues() As Integer

ReDim vIntegerValues(0 To iCountIntegers)

Get #iReadFile, uFromBytePos, vIntegerValues()