Я пытаюсь следовать учебнику Вот и сериализовать объекты Qt. Вот мой код:
QFile file("/Users/kaustav/Desktop/boo.dat");
if (!file.open(QIODevice::WriteOnly)) {
qDebug() << "Cannot open file for writing: "<< qPrintable(file.errorString()) << endl; //no error message gets printed
return 0;
}
QDataStream out(&file); // we will serialize the data into the file
out.setVersion(QDataStream::Qt_5_3); //adding this makes no difference
out << QString("the answer is"); // serialize a string
out << (qint32)42;
Когда я запускаю эту программу, файл хорошо создается на моем рабочем столе, но его размер составляет 0 кБ, он пуст. Естественно, когда я тогда попробую это:
QFile file("/Users/kaustav/Desktop/boo.dat");
file.open(QIODevice::ReadOnly);
QDataStream in(&file); // read the data serialized from the file
in.setVersion(QDataStream::Qt_5_3);
QString str;
qint32 w;
in >> str >> w;
Я получаю пустую строку в str
, Что я делаю неправильно? Если какая-либо помощь, я использую Qt Creator 3.1.1
основанный на Qt 5.2.1
,
Проверьте, есть ли какие-либо ошибки, возвращаемые при вызове open, и убедитесь, что вы закрыли файл с помощью file.close (), когда закончите с ним.
Поскольку вы используете Qt 5, вы должны действительно использовать QSaveFile вместо этого, при сохранении данных.