我創建了函數Qt來讀取二進制文件,它工作。Datastream Qt到標準C++代碼
[代碼]
if (fileLoad.open(QIODevice::ReadOnly))
{
QDataStream in(&fileLoad);
quint8 Variable_8bits;
quint16 Variable_16bits;
quint32 Variable_32bits;
in >> Variable_16bits >> Variable_8bits >> Variable_32bits >> ZeroByte;
qDebug() << Variable_16bits << Variable_8bits << Variable_32bits;
//Works no extreme conversion necessary as i read input with "set size variables"
// first 16bits, then 8bits, then 32bits
// and store it correctly for display
}
fileLoad.close();
}
所以基本上我可以在一個二進制文件中讀取,使用不同大小的變量來訪問的值的文件中(因爲我知道文件結構的格式)
我的問題是,現在我需要爲標準C++函數創建相同或相似的功能。
有沒有像Qt的數據流用於C++ 還是我必須文件手動加載到緩衝器中, 然後讀取單個字節, 做逐位操作,以得到正確的表示長度, i前顯示值 或如果有一個更簡單的方法...
什麼前進,我會用std::ifstream的表現爲這個簡單的用例的方式......
Qt版本的問題究竟是什麼?你不能在某個平臺上使用它,或者一般Qt有什麼問題?另外,你需要支持pre-C++ 11工具鏈嗎?你看過std :: ifstream嗎? – lpapp
@ 2lights請注意,'QDataStream'不適用於讀寫任何二進制文件。它使用自己的序列化格式,用於讀取和寫入。格式很簡單,所以對於* some *類型,序列化格式與將原始字節直接從內存寫入文件相同,但是爲此目的使用'QDataStream'的好處是可疑的。 – hyde
@hyde:我同意。 – lpapp