QDataStream與QTextStream的區別:QTextStream可以序列化一些基本的文本讀寫,序列化一些簡單的類型例如:char,str等等,而QDataStream可以序列化多種結構類型例如QMap,QPoint等等,
QDataStream的序列化是獨立於操作平台的,QDataStream本身在進行讀寫的時候要與相關具體的存儲類進行配合使用比如QByteArray和QBuffer,兩者具體的介紹可參考此文http://blog.csdn.net/u012627502/article/details/27060477
當然QDataStream也只能序列化QT的類,如果你想序列化自定義結構體,這時候推薦使用google的protobuf
QPoint pos(5, 7);
qDebug()<<pos;
QPoint tmp;
qDebug()<<tmp;
QByteArray datagram;
QDataStream out(&datagram, QIODevice::ReadWrite); //使用QDataStream將Qpoint序列化進QByteArray內
out.setVersion(QDataStream::Qt_5_8); //設置Qt串行化版本 使用Qt5.8版本流
out<<pos;
qDebug()<<datagram.length();
QDataStream dsIn(&datagram,QIODevice::ReadWrite); //使用QDataStream將QByteArray反序列化
dsIn.setVersion(QDataStream::Qt_5_8); //設置Qt串行化版本 使用Qt5.8版本流
dsIn>>tmp;
qDebug()<<tmp;