我正在尝试将位字段结构写入文件然后读取它。
例如:
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>>
我得到一个错误
错误:无法将位域 'a.teststruct::a' 绑定到 'quint16& {aka short unsigned int&}'
我可以用>>
运算符做什么,或者有其他方法可以将数据读取到我的结构中?