c++ - 从文件中读取整数时出现错误值

标签 c++

几周前我问了一个类似的问题,但我卡住了,我真的不知道我是否没有犯任何其他错误。

我现在可以比较清楚地知道我在和什么战斗。

我正在尝试用 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/

相关文章:

c++ - CRT内存分配

c++ - 使用专门的模板根据返回类型重载函数

c++ - 为什么我不能通过在 cpp 中返回将 char* 添加到 char*?

c++ - 用于从头文件创建类主体的智能工具(插件?)

c++ - 5 法则(对于构造函数和析构函数)是否过时了?

c++ - Boost线程间通信队列

c++ - dijkstra 实现给出了错误的输出

C++ 相当于 Python 的 traceback 库

c++ - 在 Linux 中使用 C++ 跨卷 move 文件

c++ - getenv ("LINES") 在 Windows 上不起作用