问个关于QT二进制读写的问题?

louis_liux 2014-11-02 07:13:44
我有这些一些散点文件
605835.51668886 6073556.38221996 1125.63109397888
605860.50694257 6073557.0806523 1125.61869621277
605885.49719628 6073557.77908465 1125.61047077179
...
...
n
我想把他写入到二进制文件中,该如何操作呢
把这些数据从二进制文件当中读出来,又是如何操作的呢,小弟我初学者,看了网上一些例子,
都是对固定数字进行读写的,这样不固定的就搞不定了,求大神指点
...全文
361 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
louis_liux 2014-11-11
  • 打赏
  • 举报
回复
引用 5 楼 u010177258 的回复:
[quote=引用 3 楼 mrplplplpl 的回复:] 写文件: ============================ #include <QFile> #include <QDataStream> #include <QString> // 建立文件 QFile file("file.dat"); file.open(QIODevice::WriteOnly); // 序列化文件 QDataStream out(&file); // 写入各类数据 out << QString("Hash data"); out << (qint32) 42; out << (float) 41; out << (double) 40; ... file.close(); 读文件: ============================ QFile file("file.dat"); file.open(QIODevice::ReadOnly); // 序列化 QDataStream in(&file); QString str; qint32 a; float b; double c; in >> str >> a >> b >> c; // str = "hash data", a = 42, b = 41, c = 40 ... f.close(); 上述例子包含了浮点,字符串, 整型。楼主自己再尝试一下, 不难
这个是可行的。还有就是你要保存的*dat[/quote] 是啊,这个是可以用啊 但是有个问题想不明白呢 我读出的时候,大哥比方里面有很多条,float,float,flot这是为一行数据,但是里面有很多这样的数据,我该怎么样定位呢 怎么样循环读出来呢,想不明白啊
super_90 2014-11-10
  • 打赏
  • 举报
回复
引用 3 楼 mrplplplpl 的回复:
写文件: ============================ #include <QFile> #include <QDataStream> #include <QString> // 建立文件 QFile file("file.dat"); file.open(QIODevice::WriteOnly); // 序列化文件 QDataStream out(&file); // 写入各类数据 out << QString("Hash data"); out << (qint32) 42; out << (float) 41; out << (double) 40; ... file.close(); 读文件: ============================ QFile file("file.dat"); file.open(QIODevice::ReadOnly); // 序列化 QDataStream in(&file); QString str; qint32 a; float b; double c; in >> str >> a >> b >> c; // str = "hash data", a = 42, b = 41, c = 40 ... f.close(); 上述例子包含了浮点,字符串, 整型。楼主自己再尝试一下, 不难
这个是可行的。还有就是你要保存的*dat
louis_liux 2014-11-10
  • 打赏
  • 举报
回复
引用 3 楼 mrplplplpl 的回复:
写文件: ============================ #include <QFile> #include <QDataStream> #include <QString> // 建立文件 QFile file("file.dat"); file.open(QIODevice::WriteOnly); // 序列化文件 QDataStream out(&file); // 写入各类数据 out << QString("Hash data"); out << (qint32) 42; out << (float) 41; out << (double) 40; ... file.close(); 读文件: ============================ QFile file("file.dat"); file.open(QIODevice::ReadOnly); // 序列化 QDataStream in(&file); QString str; qint32 a; float b; double c; in >> str >> a >> b >> c; // str = "hash data", a = 42, b = 41, c = 40 ... f.close(); 上述例子包含了浮点,字符串, 整型。楼主自己再尝试一下, 不难
要是里面有很多 float 三个float为一行,不确定里面有多少行,该怎么确认位置呢
mrplplplpl 2014-11-06
  • 打赏
  • 举报
回复
写文件: ============================ #include <QFile> #include <QDataStream> #include <QString> // 建立文件 QFile file("file.dat"); file.open(QIODevice::WriteOnly); // 序列化文件 QDataStream out(&file); // 写入各类数据 out << QString("Hash data"); out << (qint32) 42; out << (float) 41; out << (double) 40; ... file.close(); 读文件: ============================ QFile file("file.dat"); file.open(QIODevice::ReadOnly); // 序列化 QDataStream in(&file); QString str; qint32 a; float b; double c; in >> str >> a >> b >> c; // str = "hash data", a = 42, b = 41, c = 40 ... f.close(); 上述例子包含了浮点,字符串, 整型。楼主自己再尝试一下, 不难
yxred 2014-11-04
  • 打赏
  • 举报
回复
用 QDataStream + QFile,具体真得看帮助哦。我也不好给你现成代码,时间有限 或直接用 C 库。
LALUOBOYOU 2014-11-02
  • 打赏
  • 举报
回复
你直接以二进制的方式打开, 用fopen就行了, 读的时候用 "rb", 写的时候用"wb". 我最近做过, 发现不用QT 中的类就能简单的实现, 不用想的太复杂.....

16,212

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧