// ============================================================================
//  qdatastream_io  —  Qt 桌面示例
//  来源：川大 C++/LinuxC wiki「02.Qt方向」
//  原文片段：[58954552:data]
//  说明：本文件由 gen_part3.py 从 wiki 片段生成（必要时补 main/QApplication
//        外壳、include、修正笔误）。详见 docs/ERRATA.md。
//        离屏验证：QT_QPA_PLATFORM=offscreen tools/run_qt.sh <target>（自动退出）
// ============================================================================

#include <QApplication>
#include <QFile>
#include <QDataStream>
#include <QDebug>
#include <QTimer>

// 二进制文件读写：先写 file.dat，再读回
int main(int argc, char* argv[]) {
    QCoreApplication app(argc, argv);

    // ---- 写 ----
    {
        QFile file("file.dat");
        if (file.open(QIODevice::WriteOnly)) {
            QDataStream out(&file);
            out << QString("hello") << qint32(42) << 3.14;
            file.close();
        }
    }
    // ---- 读 ----
    {
        QFile file("file.dat");
        if (file.open(QIODevice::ReadOnly)) {
            QDataStream in(&file);
            QString s; qint32 n; double d;
            in >> s >> n >> d;
            qDebug() << "read:" << s << n << d;
            file.close();
        } else {
            qDebug() << "open failed";
        }
    }

    QTimer::singleShot(0, &app, &QCoreApplication::quit);
    return app.exec();
}
