我file.txt
的數據如下:如何使用Qt獲取文件內部文本的值?
Student_ID=0001
Student_Name=joseph
Student_GradeLevel=2
我如何獲得的價值,讓說,我想要得到的Student_ID
使用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],然後我們可以嘗試幫助解決特定問題。你還應該閱讀[問]。 –