我是C ++和Qt的新手。我正在尝试使用QFile接口打开和读取map.dat文件,但是即使目录中确实存在该文件也不会打开该文件。
我正在使用MacOS Mojave 10.14.2。 Qt 5.11.3。编译器是Qt 5.11.3 clang_64bit
QFile mapDat("/Users/myname/projectname/file.dat");
if (!mapDat.exists()){
qDebug() << "not exist";
}
QString errMsg;
QFileDevice::FileError err = QFileDevice::NoError;
if (!mapDat.open(QIODevice::ReadOnly) | QFile::Text){
errMsg = mapDat.errorString();
err = mapDat.error();
qDebug() << "could not open it" << err << errMsg;
return;
}
QTextStream in(&mapDat);
QString mText = in.readAll();
qDebug() << mText;
mapDat.close();
我对C ++相当陌生,但是我希望qDebug() << mText
在控制台中给我一些东西,但事实并非如此。输出是
could not open it 0 "Unknown error"
,位于if语句中的qDebug()
行。
答案 0 :(得分:0)
您的条件不正确:
if (!mapDat.open(QIODevice::ReadOnly) | QFile::Text)
这将尝试以只读模式打开文件。其结果取反(!
),然后与QFile::Text
(即!= 0)进行或运算。因此条件将永远为真。
您有一个简单的错字(括号错误):
if (!mapDat.open(QIODevice::ReadOnly | QFile::Text))
// ^ Bitwise OR of flags for mapDat.open call