vs2019中的不通过第三方库进行yaml文件的根据不同键值读取到结构体中和写入结构体的c++
时间: 2024-09-23 11:13:42 浏览: 38
基于C++语言的ceres-solver SLAM14讲第三方库源码解析与设计
在Visual Studio (VS) 2019中,如果你想要直接操作YAML文件而不依赖第三方库,你可以使用标准库`std::fstream`结合C++ YAML解析库如`schemata`或`yaml-cpp`提供的简单API。这两个库虽然不是Visual Studio自带的,但是它们是流行的开源选项。
1. **读取YAML到结构体**:
- 首先,你需要包含必要的头文件并设置一个简单的YAML解析函数。例如,如果你使用`schemata`库,可以这样做:
```cpp
#include "schemata.hpp"
using namespace schemata;
struct MyStruct {
std::string key;
int value;
};
void read_yaml(const std::string& filename, MyStruct& mystruct) {
Schema schema = load_yaml(filename);
schema >> mystruct;
}
```
- 然后,在需要的地方调用这个函数,传入你的YAML文件路径和目标结构体。
2. **将结构体写入YAML**:
- 同样的,创建一个函数来序列化结构体到YAML:
```cpp
void write_yaml(const MyStruct& mystruct, const std::string& filename) {
Schema schema;
to_yaml(schema, mystruct);
save_yaml(filename, schema);
}
```
- 这样,给定一个`MyStruct`实例,你可以将其内容保存到指定的YAML文件中。
请注意,这种方法可能会比较繁琐,因为你需要手动处理解析和序列化过程。如果项目规模较大,建议考虑使用成熟的第三方库,比如`ruamel.yaml`,它提供了更易用的API。
阅读全文