Qt-读写二进制文件(数据结构)

36 篇文章 9 订阅

原文:http://beself.top/2020/02/14/qt-read-write-binaryfiledata-struct/
二进制文件存储方式比较方便,文本小,保密效果好

  1. 定义一个数据结构并实现相关操作
  2. 使用QDataStream进行读写操做

数据结构

#include <QtCore>

struct AccountInfo
{
// 数据
    QString Account;
    QString LogPasswd;

// 初始化
    AccountInfo(){}
    AccountInfo(const QString &account,
                const QString &logPasswd) :
        Account(account),
        LogPasswd(logPasswd){}
    bool operator==(const AccountInfo &other) const
    {
        return Account == other.Account && LogPasswd == other.LogPasswd;
    }
};

// 符号重载
inline QDataStream &operator<<(QDataStream &stream, const AccountInfo &Info)
{
    return stream << Info.Account << Info.LogPasswd;
}

inline QDataStream &operator>>(QDataStream &stream, AccountInfo &Info)
{
    return stream >> Info.Account << Info.LogPasswd;
}

写文件

    QList<AccountInfo> Info;
    Info.push_back(AccountInfo("1111111111", "11111111111111111111111"));
    Info.push_back(AccountInfo("2222222222", "22222222222222222222222"));
    Info.push_back(AccountInfo("3333333333", "33333333333333333333333"));
    QFile file("AccountInfo.dat");
    if (!file.open(QIODevice::WriteOnly)) {
        qDebug() << "open file failed.";
        return;
    }
    QDataStream out(&file);
    out << Info;
    file.close();

读文件

    QFile file("AccountInfo.dat");
    if (!file.open(QIODevice::ReadOnly)) {
        qDebug() << "open file failed.";
        return;
    }
    QList<AccountInfo> Info;
    QDataStream in(&file);
    in >> Info;
    file.close();
    for(const auto& d : qAsConst(Info)){
        qDebug() << "Account:" << d.Account << "Passwd:" << d.LogPasswd;
    }

  1. 其中QList可以换成QVector等其他数据存储结构
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ALONE_WORK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值