如何使用Qt获取文件内的文本值?

时间:2016-08-23 00:23:28

标签: c++ algorithm qt

file.txt的数据如下:

Student_ID=0001
Student_Name=joseph
Student_GradeLevel=2

我如何获得价值,假设我想使用Qt获得Student_ID。 感谢。

2 个答案:

答案 0 :(得分:1)

看看这个功能,它可用于在输入文件中找到您想要的任何值,其中所有行都采用您在上面发布的格式({{1 }})。如果未找到密钥,则返回空的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类(由 sebastian 提及),可以让您更轻松地读取这些值

QSettings

答案 1 :(得分:0)

您也可以使用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 ++细节错误就道歉......