我的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
返回0x00
,b
返回0x03
。
但是在我的C ++代码中:
std::ifstream ifs("output.bin", std::ios::binary);;
char buf1[2];
ifs.read(buf1, 2);
buf1[0]
返回-52
,buf1[1]
返回-52
。
我的代码出了什么问题?
答案 0 :(得分:4)
您需要在创建后和读取后在C ++代码中检查流的状态,以确保操作成功。即创建流后,在阅读之后if (ifs) {...}
。如果任一操作失败,则在您从buf1
读取未初始化/未定义的数据之后。
有关正确使用ifstream的示例,请参阅http://www.cplusplus.com/reference/istream/istream/read/。