0
튜토리얼 here을 따라 가고 Qt 객체를 직렬화하려고합니다. 여기 내 코드입니다 :이 프로그램을 실행하면 파일이 바탕 화면 모든 권리에QDataStream에서 데이터를 직렬화 할 수 없습니다.
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 KB입니다. 당연히이 다음을 시도해보십시오.
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 5.2.1
을 기반으로 Qt Creator 3.1.1
을 사용하고 있습니다.
클로이 (클로즈업) 추가! 그런데 왜 나는 그것을 필요로합니까! C++에서 파일 핸들은 변수가 닫히면 자동으로 닫힙니다. 그렇죠? – SexyBeast
QFile에 대한 Qt 소스 코드를 보면 스트림을 플러시 (flush)하는 close를 호출합니다. QDataStream이 파일로 스트리밍을 완료하기 전에 삭제 될 수 있습니다. – TheDarkKnight
예, 가능합니다. 고마워, 어쨌든! :) – SexyBeast