Как я могу написать данные QVector, который состоит из объектов моего класса в файл? как я могу это сделать?Как я могу написать данные QVector, который состоит из объектов моего класса в файл?
0
A
ответ
1
Ваш вопрос довольно общий, но я сделаю все возможное.
Предположим, что вы написали класс, который хотите сохранить в 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();
}
Этого должно быть достаточно, чтобы вы начали. Имейте в виду, что я не тестировал этот код, поэтому используйте его на свой страх и риск!
вам необходимо сериализовать свой класс. См. Здесь, например, [serialization-with-qt] (http://stackoverflow.com/questions/2570679/serialization-with-qt) [Qt5_QFile_Serialization_Class] (http://www.bogotobogo.com/Qt/Qt5_QFile_Serialization_Class.php), но есть много других сообщений. Мне было проще сериализовать [JSON] (http://doc.qt.io/qt-5/json.html) – Miki