0

クラスのオブジェクトで構成される QVector のデータをファイルに書き込むにはどうすればよいですか? どうやってやるの?

4

1 に答える 1

2

あなたの質問はかなり一般的ですが、私は最善を尽くします。

に格納したいクラスを作成したとしますQVector。これはとても簡単です:

class MyClass {
public:
     MyClass(double input) : a(input) {}
private:
    double a;
};

QVector<MyClass> classes;
classes.push_back(MyClass(1.0));
classes.push_back(MyClass(2.0));
classes.push_back(MyClass(3.0));

がクラスを出力ストリームに書き込む方法を理解できるようにMyClass、クラスをシリアル化する必要があります。operator<<これを行うには、次の関数シグネチャをMyClass定義に追加します。

class MyClass {
    // omitted
    friend QDataStream& operator<<(QDataStream &stream, const MyClass &class) {
        stream << class.a;
        return stream;
    }
};

operator<<クラス自体で を定義しましたが、実装ファイルで定義する必要があります。

これで、ベクトルの出力を自由にファイルに書き込むことができます。

QString filename = "/path/to/output/file/myclass.txt";
QFile fileout(filename);

if (fileout.open(QFile::ReadWrite | QFile::Text)) {
    QTextStream stream(&fileout);
    for (QVector<MyClass>::const_iterator it = classes.begin(); 
        it != classes.end(); ++it) {
        out << *it;
    }

    // and close the file when you're done with it
    fileout.close();
}

それはあなたが始めるのに十分なはずです. 私はこのコードをテストしていないので、自己責任で使用してください。

于 2015-07-09T19:40:16.503 に答える