[英]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.