C++写入yaml数据
时间: 2024-09-20 17:10:54 浏览: 33
yaml-cpp.tar.gz
在C++中,可以使用第三方库如Rapid YAML、YAML-CPP或者是TinyYAML等来处理YAML数据。以下是使用Rapid YAML的一个简单示例:
```cpp
#include "rapidxml.hpp"
#include "rapidxml_utils.hpp"
using namespace rapidxml;
// 定义一个简单的数据结构
struct Person {
std::string name;
int age;
};
// 将Person对象序列化到YAML
void writeToYaml(const Person& person, const std::string& filename) {
xml_document<> doc; // 创建文档对象
xml_node<>* root = doc.allocate_node(node_element, "person"); // 根节点
xml_node<>* dataNode = doc.allocate_node(node_map); // 存储数据的map节点
root->append_child(dataNode);
doc.append_node(root); // 添加到文档中
// 写入姓名和年龄
xml_node<>* nameNode = doc.allocate_node(node_key_value);
nameNode->set_name("name");
nameNode->value(person.name.c_str());
dataNode->append_node(nameNode);
xml_node<>* ageNode = doc.allocate_node(node_key_value);
ageNode->set_name("age");
ageNode->value(std::to_string(person.age).c_str());
dataNode->append_node(ageNode);
// 写入文件
file<char> f(filename, file_write);
if (!doc.save(f))
throw std::runtime_error("Error saving to YAML file.");
}
int main() {
Person p {"Alice", 30};
writeToYaml(p, "output.yaml");
return 0;
}
```
在这个例子中,我们首先创建了一个XML文档表示YAML格式的数据,然后将`Person`对象的属性添加到这个文档中,最后保存到指定的YAML文件。
阅读全文