如何使用Qt获取文件内部文本的值?
问题描述:
我file.txt
的数据如下:如何使用Qt获取文件内部文本的值?
Student_ID=0001
Student_Name=joseph
Student_GradeLevel=2
我如何获得的价值,让说,我想要得到的Student_ID
使用Qt。 谢谢。
答
看看这个功能,它可以用于在你的输入文件中找到你想要的任何值,其中所有的行都是你上面发布的格式(key=value
)。如果找不到密钥,则返回一个空的QString()
对象。
QString findValueInFile(QString key, QString filename) {
QFile file(filename);
if(file.open(QIODevice::ReadOnly)) {
QTextStream txtStr(&file);
QStringList fileContent = txtStr.readAll().split('\n');
for(auto &&line : fileContent) {
if(line.contains(key)) return line.split(QChar('='))[1];
}
file.close();
}
return QString(); // not found
}
现在你的地方叫它,例如:
qDebug() << findValueInFile("Student_ID", "file.txt");
qDebug() << findValueInFile("Student_Name", "file.txt");
此功能可如果您更换=
标志与其他分隔符例如很容易地修改=>
或别的。然而,对于key=value
格式有一个特殊的QSettings
类,它可以让你阅读这些值更容易(由塞巴斯蒂安提到):
QSettings file("file.txt", QSettings::IniFormat);
qDebug() << file.value("Student_Name").toString(); // et voila!
答
你或许可以也使用QSettings
,因为他们能够阅读ini文件。 有一些注意事项,虽然关于反斜线这可能是对你很重要(虽然他们是不是你张贴的例子):http://doc.qt.io/qt-4.8/qsettings.html#Format-enum
QSettings iniFile("myfile.txt", QSettings::IniFormat);
// now get the values by their key
auto studentId = iniFile.value("Student_ID").toString().toInt();
我更多的是PyQt
用户的,所以:道歉,如果我有一些C++细节错误...
你需要使用Qt类,或者你可以使用'std :: ifstream'吗? –
@ThomasMatthews我需要使用Qt类,那么我该怎么做?谢谢 – Noooobz2016
请[编辑]你的问题,以显示[你到目前为止尝试过](http://whathaveyoutried.com)。您应该包含您遇到问题的代码[mcve],然后我们可以尝试帮助解决特定问题。你还应该阅读[问]。 –