2017-04-16 80 views
0

陣列我有這種形式的.ini文件:的Qt4 QSettings讀取多個值

#init file: 

[files] 
fileAmount=2 

file1=string1, string2, 0 
file2=string1, string2, 1 



//cpp file: 
settings=new QSettings(QString(":resources/configuration"), QSettings::IniFormat); 

int n=set("files/fileAmount").toInt(); 

for(int i=1; i<=n; i++){ 
    QStringList list=settings->value("files/file"+QString::number(i)).toStringList(); 
    out<<list[0]<<" "<<list[1]<<" "<<list[2]<<endl; 
} 




//output: 
string1 string2 0 
string1 string2 1 

有什麼辦法來設置空格作爲分隔符QStringList中,而不是KOMMA?
即有此文件:

#init file: 

[files] 
fileAmount=2 

file1=string1 string2 0 
file2=string1 string2 1 

,並得到相同的輸出?

+0

請顯示一些代碼,你已經嘗試過。 –

+0

以及如果** string1 **或** string2 **裏面有**空格**會怎麼樣? – Redanium

回答

1

Ini文件:

C:\ Users \用戶名\ AppData \漫遊\ MYORG \在ini文件中的空間分隔的StringList MYAPP.INI

[files] 
file1=string1 string2 0 

示例代碼:

#include <QCoreApplication> 
#include <QStringList> 
#include <QSettings> 
#include <QDebug> 

void readSettings(); 
void writeSettings(); 

QStringList list; 

int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 

    QSettings::setDefaultFormat(QSettings::IniFormat); 
    qApp->setApplicationName("MyApp"); 
    qApp->setOrganizationName("MyOrg"); 

    readSettings(); 

    qDebug() << list; 

    writeSettings(); 

    return a.exec(); 
} 

void readSettings() 
{ 
    // read a space delimited value from QSettings string 
    // into a stringlist 
    QSettings s; 

    s.beginGroup("files"); 

    QString temp = s.value("file1","string1 string2 0").toString(); 
    list << temp.split(" "); 

    s.endGroup(); 
} 

void writeSettings() 
{ 
    // write a space delimited value from QStringList 
    QSettings s; 

    s.beginGroup("files"); 

    s.setValue("file1",list.join(" ")); 

    s.endGroup(); 
} 

輸出:

("string1", "string2", "0") 

希望有所幫助。