qt 关于二进制文件(类对象)读入的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt 关于二进制文件(类对象)读入的问题相关的知识,希望对你有一定的参考价值。
//写入
QFile file("staff.dat");
if (!file.open(QIODevice::WriteOnly))
QMessageBox::warning(this, tr("warning"), tr("Cannot open file for writing:"), QMessageBox::Yes);
return;
QDataStream out(&file);
out.setVersion(QDataStream::Qt_5_7);
out << qint32(ui2.tableWidget->rowCount());
for (int i = 0;i < 15;++i)
out << sta[i];
file.close();
//初始化 读入
QDataStream in(&file);
in.setVersion(QDataStream::Qt_5_7);
qint32 sta_row = 0;
in >> sta_row;
staffClass *sta = new staffClass[sta_row];
//读入数据到类数组
for (int i = 0;i < 2;++i)
in >> sta[i];
最后查看输出结果发现sta_row成功读到15,sta[0]成功读到所有成员数据,但其他14个对象成员数据都读的是空或是0,不知道哪里出了问题,还请各位能够解答。
此处为这个,i<2只是想测试下
//读入数据到类数组
for (int i = 0;i < sta_row;++i)
in >> sta[i];
JVM类加载—加载
1、加载:
查找并加载类,将.class文件中的二进制数据读入到内存中,放在运行时数据区的方法内,然后在堆内创建一个java.lang.class对象用来封装类在方法区内的数据结构。并且向程序员提供了访问方法区内的数据结构的接口,程序中类的实例通过getClass()方法获取类在堆中的class对象,通过class对象可以完成对方法区中类数据结构的访问。
class文件的加载方式:
(1)、本地系统加载
(2)、网络下载.class文件
(3)、jar包、zip文件中获取
(4)、从专有数据库中提取.class文件
(5)、将Java源文件动态编译为.class文件
类加载器的类型:
Java虚拟机自带的加载器
(1)、根类加载器(BootStrap),C++实现,Java程序员无法在代码中获取到该类
(2)、扩展类加载器(Extension),Java代码实现
(3)、系统类加载器(System),又叫应用加载器,Java代码实现
用户自定义的加载器
继承java.lang.ClassLoader,用户可以定制类的加载方式
Java规范允许类加载器在预料到某个类将要被使用时就预先加载它,如果在预先加载的过程中遇到class文件缺失或存在错误,类加载器会在首次主动使用该类时才报告错误(LinkageError错误), 如果这个类一直没有被程序使用,那么类加载器就不会报错。
类被加载进内存之后后就进入连接阶段。
以上是关于qt 关于二进制文件(类对象)读入的问题的主要内容,如果未能解决你的问题,请参考以下文章