我下面有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

我的代码有什么问题?

最佳答案

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

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

09-28 08:45