QDataStream序列化的使用


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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM