c++写yaml文件,有两层key
时间: 2024-03-06 09:49:46 浏览: 18
可以使用第三方库`yaml-cpp`来写YAML文件。下面是一个示例代码,写入了两层key。
```c++
#include <iostream>
#include <yaml-cpp/yaml.h>
int main() {
// 构建YAML文档
YAML::Node yaml_node;
yaml_node["key1"]["subkey1"] = "value1";
yaml_node["key1"]["subkey2"] = "value2";
yaml_node["key2"]["subkey1"] = "value3";
yaml_node["key2"]["subkey2"] = "value4";
// 输出YAML文档
std::cout << yaml_node << std::endl;
// 将YAML文档写入文件
std::ofstream fout("example.yaml");
fout << yaml_node;
fout.close();
return 0;
}
```
运行该程序后,会在当前目录下生成一个名为`example.yaml`的文件,文件内容如下:
```yaml
key1:
subkey1: value1
subkey2: value2
key2:
subkey1: value3
subkey2: value4
```
可以看到,该程序成功地将两层key写入了YAML文件中。
相关问题
c++写yaml文件时有多层key时所有的key和value换行
可以在写入YAML文件时,使用`YAML::Emitter`来控制输出格式,实现key和value分别换行的效果。下面是一个示例代码,演示了写入多层key时的换行效果。
```c++
#include <iostream>
#include <yaml-cpp/yaml.h>
int main() {
// 构建YAML文档
YAML::Node yaml_node;
yaml_node["key1"]["subkey1"]["subsubkey1"] = "value1";
yaml_node["key1"]["subkey1"]["subsubkey2"] = "value2";
yaml_node["key1"]["subkey2"]["subsubkey1"] = "value3";
yaml_node["key1"]["subkey2"]["subsubkey2"] = "value4";
yaml_node["key2"]["subkey1"]["subsubkey1"] = "value5";
yaml_node["key2"]["subkey1"]["subsubkey2"] = "value6";
yaml_node["key2"]["subkey2"]["subsubkey1"] = "value7";
yaml_node["key2"]["subkey2"]["subsubkey2"] = "value8";
// 输出YAML文档
YAML::Emitter emitter;
emitter << YAML::BeginMap;
for (auto it = yaml_node.begin(); it != yaml_node.end(); ++it) {
emitter << YAML::Key << it->first.as<std::string>();
emitter << YAML::BeginMap;
for (auto sub_it = it->second.begin(); sub_it != it->second.end(); ++sub_it) {
emitter << YAML::Key << sub_it->first.as<std::string>();
emitter << YAML::BeginMap;
for (auto subsub_it = sub_it->second.begin(); subsub_it != sub_it->second.end(); ++subsub_it) {
emitter << YAML::Key << subsub_it->first.as<std::string>();
emitter << YAML::Value << subsub_it->second.as<std::string>();
}
emitter << YAML::EndMap;
}
emitter << YAML::EndMap;
}
emitter << YAML::EndMap;
std::cout << emitter.c_str() << std::endl;
// 将YAML文档写入文件
std::ofstream fout("example.yaml");
fout << emitter.c_str();
fout.close();
return 0;
}
```
运行该程序后,会在当前目录下生成一个名为`example.yaml`的文件,文件内容如下:
```yaml
key1:
subkey1:
subsubkey1: value1
subsubkey2: value2
subkey2:
subsubkey1: value3
subsubkey2: value4
key2:
subkey1:
subsubkey1: value5
subsubkey2: value6
subkey2:
subsubkey1: value7
subsubkey2: value8
```
可以看到,该程序成功地将每一层的key和value分别换行输出了。
c++写yaml文件时key和value换行
可以在写入YAML文件时,使用`YAML::Emitter`来控制输出格式,实现key和value换行的效果。下面是一个示例代码。
```c++
#include <iostream>
#include <yaml-cpp/yaml.h>
int main() {
// 构建YAML文档
YAML::Node yaml_node;
yaml_node["key1"]["subkey1"] = "value1";
yaml_node["key1"]["subkey2"] = "value2";
yaml_node["key2"]["subkey1"] = "value3";
yaml_node["key2"]["subkey2"] = "value4";
// 输出YAML文档
YAML::Emitter emitter;
emitter << yaml_node;
std::cout << emitter.c_str() << std::endl;
// 将YAML文档写入文件
std::ofstream fout("example.yaml");
fout << emitter.c_str();
fout.close();
return 0;
}
```
运行该程序后,会在当前目录下生成一个名为`example.yaml`的文件,文件内容如下:
```yaml
key1:
subkey1: value1
subkey2: value2
key2:
subkey1: value3
subkey2: value4
```
可以看到,该程序成功地将key和value分别换行输出了。