yaml demo

A YAML parser and emitter in C++

yaml-cpp 是一个用于解析 yaml 的 c++ 库

demo

YAML::Node node = YAML::Load("" 
    "- name: Jonen"            
    "  age: 12n"               
    "- name: Susann"           
    "  age: 13n"               
);

// print scalar
std::cout << node[0]["name"];                       // Jone

// print map                                        // name: Jone
std::cout << node[0];                               // age: 12

// type cast
std::string name = node[1]["name"].as<string>();   
std::cout << name;                                  // Susan

// append new node
YAML::Node newNode;                                 // - name: Jone             
newNode["name"] = "Michelle";                       //   age = 12
newNode["age"] = 12;                                // - name: Susan               
                                                    //   age = 13
node.push_back(newNode);                            // - name: Michelle
std::cout << node                                   //   age = 12

// modify node
node[0]["name"] = "Michelle";                       // name: Michelle
cout << node[0];                                    // age: 12

// node type
switch (node.Type()) {
    case YAML::NodeType::Null:      // ...
    case YAML::NodeType::Scalar:    // ...
    case YAML::NodeType::Sequence:  // ...
    case YAML::NodeType::Map:       // ...
    case YAML::NodeType::Undefined: // ...
}

// node type check
node.IsNull();
node.IsScalar();
node.IsSequence();
node.IsMap();
// complex mapping
YAML::Node node = YAML::Load("" 
    "? [year, month]n"         
    ": [2012, 12]"              
);

vector<string> v;
v.push_back("year");
v.push_back("month");

cout << node[v][1] << endl;                     // 12