[英]Why is the C++ read bytes result different from C#?
我下面有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
读取未初始化/未定义的数据buf1
。
有关正确使用ifstream的示例,请参见http://www.cplusplus.com/reference/istream/istream/read/ 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.