C++ YAML:如何编辑/写入 .yaml 文件中的节点
C++ YAML: How to edit/write to a node in a .yaml file
我正在尝试编写一个函数,该函数将使用yaml-cpp
写入/编辑.yaml
文件中的节点。我有点让它工作,因为我的代码将编辑本地副本。当我打印出_baseNode
时,它显示节点中的值为 5.4。但是,退出该功能并在计算机上检查我的.yaml
后,值 5.4 不存在。
这是我的尝试(_baseNode
是我班的私人成员):
void ParametersServerPC::testFunc2() {
boost::filesystem::path path(boost::filesystem::initial_path() / _parameterFileName);
_baseNode = YAML::LoadFile(_parameterFileName);
_baseNode["chip"]["clock_rate"]["3"] = 5.4;
std::cout << _baseNode << std::endl;
}
对于我的第二次尝试,我创建了一个YAML::Node& baseNode
:
YAML::Node& baseNode = YAML::LoadFile(_parameterFileName);
但随后我收到此错误:
invalid initialization of non-const reference of type 'YAML::Node&' from an rvalue of type 'YAML::Node'
对于那些感兴趣的人,.yaml
文件如下所示:
chip:
clock_rate:
0: 1.0
1: 1.0
2: 1.0
3: 3.0
4: 1.0
我想将 3
映射的值从 3.0 更改为 5.4。
就像@filmor评论中所说的那样,LoadFile
只将数据加载到内存中,而不提供文件系统的接口。
因此,编辑.yaml
文件时,必须首先编辑文件的根节点并将其转储回文件中,如下所示:
YAML::Node node, _baseNode = YAML::LoadFile("file.yaml"); // gets the root node
_baseNode["change"]["this"]["node"] = "newvalue"; // edit one of the nodes
std::ofstream fout("fileUpdate.yaml");
fout << _baseNode; // dump it back into the file
相关文章:
- 写入向量<向量<bool>>
- 如何将内容数组写入文本文件?
- 写入位置0x0000000C时发生访问冲突
- 使用ios:ate写入到流会覆盖现有文件
- 独立读取-修改-写入顺序
- 为什么在某些情况下不写入此文件?
- 用C++将哈希表写入文件并从文件中恢复
- std::当在256字节边界上写入整数时,流的奇怪行为
- 为什么指针不写入类的地址?
- 如何打开并写入一个名称取自C++中字符串的文件
- 如何在C++中从文件中读取/写入多个对象
- 无法使用Qt Creator在Windows中构建yaml-cpp
- 链表中写入访问冲突的未知原因
- 着色器纹理值与创建纹理时写入的值不同
- MESI协议和std::atomic-它是否确保所有写入立即对其他线程可见?
- 在C++中一次将矢量值写入多个文件
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- C++ YAML:如何编辑/写入 .yaml 文件中的节点
- 微型C++ YAML 读取器/写入器
- OpenCV将PCA特征向量写入yaml文件,丢失精度