QDataStream 无法正常工作,并且 return 重用时出错
QDataStream not working as well and return error with reusing
我正在 QDataStream 中存储一些数据并立即获取数据
bool M_FILEMANAGER::readFromDataFile(QString& fileName,RADARBEAMPATTERN *radbeam)
{
// for reading from file sequence .....
QFile fin(m_folderPath +"/"+ fileName);
if (fin.open(QIODevice::ReadOnly)) {
QDataStream in(&fin);
in.device()->startTransaction();
in >> radbeam->nPoints;
qDebug()<<"nPoints : "<<radbeam->nPoints;
fin.close();
return true;
}else{
return false;
}
}
一次使用效果很好,但是当我重复使用这个函数时,我得到了错误
分段故障。
提前致谢。
1) QIODevice::startTransaction()
的奇怪用法。您是要使用 QDataStream:startTransaction()
吗?你根本不需要它,但是如果你打算用它来检查文件中的 "valid" (完整)数据,那么就 properly (尽管这通常用于异步设备,如套接字):
int nPoints; // temp variable to hold data, assuming radbeam->nPoints is an int
QDataStream in(&fin);
in.startTransaction();
in >> nPoints;
if (in.commitTransaction() && radbeam != nullptr)
radbeam->nPoints = nPoints;
fin.close();
2) 段错误最有可能是由于 radbeam
指针(例如为空),但如果您试图将损坏的数据直接读入成员变量 nPoints
,则可能。无法确定原因 w/out MCVE。
我正在 QDataStream 中存储一些数据并立即获取数据
bool M_FILEMANAGER::readFromDataFile(QString& fileName,RADARBEAMPATTERN *radbeam)
{
// for reading from file sequence .....
QFile fin(m_folderPath +"/"+ fileName);
if (fin.open(QIODevice::ReadOnly)) {
QDataStream in(&fin);
in.device()->startTransaction();
in >> radbeam->nPoints;
qDebug()<<"nPoints : "<<radbeam->nPoints;
fin.close();
return true;
}else{
return false;
}
}
一次使用效果很好,但是当我重复使用这个函数时,我得到了错误 分段故障。 提前致谢。
1) QIODevice::startTransaction()
的奇怪用法。您是要使用 QDataStream:startTransaction()
吗?你根本不需要它,但是如果你打算用它来检查文件中的 "valid" (完整)数据,那么就 properly (尽管这通常用于异步设备,如套接字):
int nPoints; // temp variable to hold data, assuming radbeam->nPoints is an int
QDataStream in(&fin);
in.startTransaction();
in >> nPoints;
if (in.commitTransaction() && radbeam != nullptr)
radbeam->nPoints = nPoints;
fin.close();
2) 段错误最有可能是由于 radbeam
指针(例如为空),但如果您试图将损坏的数据直接读入成员变量 nPoints
,则可能。无法确定原因 w/out MCVE。