我想在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”之后立即找到的属性。
答案 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;
}
}
}
}