为什么C ++读取字节的结果与C#不同?

时间:2014-03-04 03:27:15

标签: c# c++ byte bytearray

我的C#代码如下:

FileStream fs       = new FileStream("output.bin", FileMode.Open);
BinaryReader _br    = new BinaryReader(fs);
var a               = _br.ReadByte();
var b               = _br.ReadByte();
fs.Close();

a返回0x00b返回0x03

但是在我的C ++代码中:

std::ifstream ifs("output.bin", std::ios::binary);;
char buf1[2];
ifs.read(buf1, 2);

buf1[0]返回-52buf1[1]返回-52

我的代码出了什么问题?

1 个答案:

答案 0 :(得分:4)

您需要在创建后和读取后在C ++代码中检查流的状态,以确保操作成功。即创建流后,在阅读之后if (ifs) {...}。如果任一操作失败,则在您从buf1读取未初始化/未定义的数据之后。

有关正确使用ifstream的示例,请参阅http://www.cplusplus.com/reference/istream/istream/read/