簡體   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