1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > qt中将数据存入文档再读出------------ writeRawData 与readRawData成对使用

qt中将数据存入文档再读出------------ writeRawData 与readRawData成对使用

时间:2018-10-23 21:58:43

相关推荐

qt中将数据存入文档再读出------------ writeRawData 与readRawData成对使用

先参考一段代码:

来自 /amnes1a/article/details/64125120

#include "mainwindow.h"#include “QApplication”#include ”QDebug“#include ”QDataStream“#include ”QFile“#include ”QVector“#include ”QMap“int main(int argc, char *argv[]){QCoreApplication a(argc, argv);//writeQFile file("test.dat");if (!file.open(QIODevice::ReadWrite)){qDebug() << "open file failed";return 0;}QDataStream ds(&file);const char *wstr = "hello-world";quint32 wi = 1234;double wd = 1.1;float wf = 2.2f;QVector<int> wvector;wvector.push_back(1);wvector.push_back(2);wvector.push_back(3);QMap<int,int> wmap;wmap.insert(4, 4);wmap.insert(5, 5);wmap.insert(6, 6);ds << wstr;ds << wi;ds << wd;ds << wf;ds << wvector;ds << wmap;ds.writeBytes("file end ", qstrlen("file end "));ds.writeRawData("really end", qstrlen("really end"));//readfile.seek(0);char *rstr;quint32 ri;double rd;float rf;QVector<int> rvector;QMap<int, int> rmap;char *rbytes;uint len;char *rraw = new char[100]{0};int rlen;ds >> rstr;ds >> ri;ds >> rd;ds >> rf;ds >> rvector;ds >> rmap;ds.readBytes(rbytes, len);ds.readRawData(rraw, rlen);qDebug() << rstr;qDebug() << ri;qDebug() << rd;qDebug() << rf;qDebug() << rvector;qDebug() << rmap;qDebug() << rbytes;qDebug() << rraw;return a.exec();

}

输出:

hello-world

1234

1.1

2.2

QVector(1, 2, 3)

QMap((4, 4)(5, 5)(6, 6))

file end

上面的例子很清晰,我自己的函数是把设备上的数据通过485读取,存在文件中,然后历史数据可以调取,例如,波形数据可以再现波形等。

485数据上来后存在一个QByteArray 数组中,然后本地打开文件,后缀自己设置,

读出的部分是把数据存到一个结构体中

具体可以根据自己的需要设置 写数据的来源和读出的数据放哪里

1、写入部分:

QFile file(FileName);

省略文件打开等

QDataStream ds(&file);

ds.writeRawData(Read_tem.data(), sizeof(struct RRD));

省略文件关闭等

2、读出部分:

省略文件打开等

QDataStream readDataStream(&file_name);

readDataStream.readRawData(pointor, sizeof(struct RRD)); //pointor是一个指向结构体的指针

省略文件关闭等

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。