2017-04-16 5 views
0

で配列を読む:Qt4をQSettingsは、私はこの形式の.iniファイル持っている複数の値

#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

と**文字列** **または**文字列** **の中に**空白**がある場合 – 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") 

それが助けてくれることを願う。

関連する問題