我想寫位域結構到文件然後讀取它。寫入/讀取位域結構到/從文件
例如:
typedef struct{
ushort
a:4,
b:4,
c:4,
d:4;
} teststruct;
我試着寫和讀像這樣
QDataStream &operator <<(QDataStream &st, const teststruct &a)
{
st <<a.a << a.b << a.c << a.d;
return st;
}
QDataStream &operator >>(QDataStream &st, teststruct &a)
{
st >>a.a >> a.b >> a.c >> a.d;
return st;
}
teststruct str1, str2;
str1.a = 1;
str1.b = 0;
str1.c = 1;
str1.d = 0;
QFile f("testfile");
f.open(QFile::WriteOnly);
QDataStream st(&f);
st << str1;
f.close();
f.open(QFile::ReadOnly);
QDataStream st(&f);
st >> str2;
f.close();
但QDataStream::operator>>
我得到一個錯誤,我可以做
error: cannot bind bitfield 'a.teststruct::a' to 'quint16& {aka short unsigned int&}'
什麼用>>
或者也許有其他方式來讀取數據到我的結構?
不能有一個非const引用到一個比特領域。 'QDataStream :: operator >>(quint16&i)'把參數作爲非const引用(因爲你得到的錯誤信息顯示),這就是爲什麼你會得到錯誤。 – thuga