从.can文件中读取

时间:2015-12-18 09:26:09

标签: qt parsing

我想在Qt中读取.can文件,我发现它与ini文件类似,所以我使用QSettings::IniFormat,我寻找2个属性(比如“rate”和“name”)。 代码:

for(int i=0; i<files.count();i++)
      {
          QSettings file(files[i], QSettings::IniFormat);
          QStringList keys = file.allKeys();
          foreach(const QString& key, keys)
          {
          if(key.endsWith("/rate"))
          {
          QString Rate = file.value(key).toString();
          qDebug() << Rate;
          }
          if(key.endsWith("/name"))
          {
              QString name = file.value(key).toString();
              qDebug()<<name;
          }

问题是我的can文件有很多“name”属性,所以这个方法返回所有“name”属性。我想存储程序在“rate”之后找到的“name”属性,在“rate”之前可以有“name”属性,所以我只想存储程序在找到“rate”之后立即找到的属性。

1 个答案:

答案 0 :(得分:0)

我不了解.can个文件,我对它们进行了一些搜索,但无法找到与ini格式相关的任何内容。

无论如何,我重写了您的代码,以输出在遇到name后遇到的第一个rate属性。

bool rateAttrFound = false;
for(int i=0; i<files.count();i++)
{
    QSettings file(files[i], QSettings::IniFormat);
    QStringList keys = file.allKeys();
    foreach(const QString& key, keys)
    {
        if(key.endsWith("/rate"))
            rateAttrFound = true;
        if(key.endsWith("/name"))
        {
            if(rateAttrFound){
                qDebug() << file.value(key).toString();
                rateAttrFound = false;
            }
        }
    }
}