クラスのオブジェクトで構成される QVector のデータをファイルに書き込むにはどうすればよいですか? どうやってやるの?
質問する
1078 次
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 に答える