Sascha Pasic
Sascha Pasic

Reputation: 21

yaml-cpp always creates a scalar node with size 0

I'd like to use yaml-cpp for storeing some config-values. In order to get in touch with yaml-cpp, I've written a method which creates a node (_config is from Type YAML::Node), put some values in it and write it into a file:

  void write_config()
  {
        std::ofstream fout("/home/user/config.yaml");
        _config["Foo"]["0"] = "0";
        _config["Foo"]["1"] = "1";
        _config["Foo"]["2"] = "2";
        _config["Foo"]["3"] = "3";
        _config["Foo"]["4"] = "4";
        _config["Foo"]["5"] = "5";
        fout << _config;
  }

after running this Method, a valid yaml file is created:

Foo:
  1: 1
  3: 3
  0: 0
  5: 5
  4: 4
  2: 2

After that, I have created a Method to read the file and print some information:

  void load_config()
  {     
        _config = YAML::Node("/home/user/config.yaml");
        cout << "_config: " << _config << endl;
        cout << "doc.Type(): " << _config.Type() << "\n";
        cout << "doc.size(): " << _config.size() << "\n";
        
        for (const auto& kv : _config)
        {
              std::cout << kv.first.as<std::string>() << "\n"; // prints Foo
              std::cout << kv.second.as<std::string>() << "\n"; // prints Foo
        }
  }

but the output is:

_config: /home/user/config.yaml
doc.Type(): 2
doc.size(): 0

could someone tell me why the Node is empty (size == 0) and how I can read the file properly?

Thank you in advance!

Upvotes: 0

Views: 302

Answers (1)

Sascha Pasic
Sascha Pasic

Reputation: 21

I've found my Mistake...

_config = YAML::Node("/home/user/config.yaml");

should be

_config = YAML::LoadFile("/home/user/config.yaml");

Upvotes: 1

Related Questions