

Linux Debian用にC++の簡単なアプリを書いています。

configファイルの読み書きに、Libconfig++を使おうと思うのですが、configファイルの読み込みはできるのですが、内容の更新のやり方が良く分かりません。  
<https://hyperrealm.github.io/libconfig/libconfig_manual.html>

addメソッドは、新しい設定項目と値の追加ようですし、writeFileは有るのですが、値の更新のやり方が分かりません。

よろしくお願いいたします。

[code]

    #include <iostream>
    #include <libconfig.h++>
    using namespace std;
    using namespace libconfig;
    
    #define CONFIG_FILE "sample_conf"
    
    int main()
    {
        Config cfg;
        try{
            cfg.readFile( CONFIG_FILE );
        }
        catch(const FileIOException &fioex){
            cerr << "I/O error while reading file." << endl;
        }
        catch(const ParseException &pex){
            cerr << "Parse error at " << pex.getFile() << ":" << pex.getLine()
                << "-" << pex.getError() << endl;
            return(EXIT_FAILURE);
        }
    
        int start;
        int end;
        string file_name;
    
        try{
            if(!(cfg.lookupValue("start", start)))
                throw 1;
            if(!(cfg.lookupValue("end", end)))
                throw 2;
            if(!(cfg.lookupValue("file", file_name)))
                throw 3;
    
            cout << "Start" << '\t' << start << endl;
            cout << "End" << '\t' << end << endl;
            cout << "File Name" << '\t' << file_name << endl;
        }
        catch(int fError){
            cout << "Itme Error " << fError << endl;
        }
    
    }
    
[/code]

sample_conf

[code]

    start = 10;
    end = 20;
    file = "settings";
    
[/code]

＜追記＞

[code]

    const Setting& root = cfg.getRoot();
    const Setting& settings = root["settings"];
    
    settings.lookupValue("start") = 30;
    
[/code]

として見ましたが、エラーになります。

Invalid arguments '  
Candidates are:  
bool lookupValue(const char *, bool &)  
bool lookupValue(const char *, int &)  
bool lookupValue(const char *, unsigned int &)  
.  
.


CC BY-SA 4.0
2018-12-11T03:48:55.490
51107
2019-06-04T02:07:21.293
2018-12-11T12:02:39.963
15090
15090
question
c++
Libconfigの使い方


> Method on Setting: Setting & operator= (bool value)  
>  Method on Setting: Setting & operator= (int value)  
>  Method on Setting: Setting & operator= (long value)  
>  Method on Setting: Setting & operator= (const long long &value)  
>  Method on Setting: Setting & operator= (float value)  
>  Method on Setting: Setting & operator= (const double &value)  
>  Method on Setting: Setting & operator= (const char *value)  
>  Method on Setting: Setting & operator= (const std::string &value)

を使うのではないでしょうか？

[code]

    cfg.lookup("start") = newValue;
    
[/code]


CC BY-SA 4.0
2018-12-11T03:57:45.847
51108
2018-12-11T12:06:53.270
2018-12-11T12:06:53.270
4236
4236
51107
answer

[code]

    const Setting &root = getRoot();
    root["start"] = 30;
    
[/code]

で解決出来ました。ありがとうございました。

この回答は、[質問者さん](https://ja.stackoverflow.com/users/15090/saitoib)の[コメント](https://ja.stackoverflow.com/questions/51107/libconfig%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9#comment53359_51108)をコミュニティ
wiki 回答として投稿したものです。


CC BY-SA 4.0
2019-06-04T02:07:21.293
55496
2019-06-04T02:07:21.293
19110
51107
answer