我下面有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
。我的代码有什么问题?
最佳答案
在创建之后和读取之后,需要在C++代码中检查流的状态,以确保操作成功。即在创建流之后,并在读取流之后,添加if (ifs) {...}
。如果任何一个操作失败,那么在您刚从buf1
读取未初始化/未定义的数据之后。
有关正确使用ifstream的示例,请参见http://www.cplusplus.com/reference/istream/istream/read/。