繁体   English   中英

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

[英]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返回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读取未初始化/未定义的数据buf1

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM