【发布时间】:2014-03-04 03:27:14
【问题描述】:
我有下面的 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。
我的代码有什么问题?
【问题讨论】:
-
也许它是一个不同的 output.bin 文件?十六进制转储(使用编辑器,而不是任何一种语言)显示什么?
-
output.bin 前 2 个字节的内容是什么?
-
在C++代码中,ifs.gcount()调用read()后返回什么?
-
@sj0h 它返回 0。我在寻找不存在的文件吗?
-
0 表示没有读取任何字符,因此 -52 只是垃圾。根据@Ozraptor 的回答,您必须在第 1 行之后检查 ifs 的状态,看看它是否是由于打开失败造成的