ifstream二进制文件错误

时间:2015-01-20 04:57:56

标签: c++ file

我必须读取一个结构如下的二进制文件: 1个字节用于n,n个字节,4个字节等

那是我的代码:

char length;
file >> length;

char c[ 64 ];
file.read( c, length );

c[ length ] = 0;

int ver;
file >> ver;

问题:ver总是0(在~2500个文件上),而不应该是。长度输出正确的值,c也是如此。在调用read之后,tellg返回-1。

1 个答案:

答案 0 :(得分:2)

你说

  

n,n字节,4字节等1个字节

我建议使用:

char length;
file.read(&length, 1);

// Check the value of length and make sure you have enough space.
if ( length > 63 )
{
   // Deal with error condition
}

char c[ 64 ];
file.read( c, length );

c[ length ] = 0;

// Use a type that is know to be 4 bytes wide.
// Use read() instead of formatted input.
int32_t ver;
file.read(reinterpret_cast<char*>(&ver), sizeof(ver));