yaml-cpp发出的结果字符串(!<!---->)是什么?

时间:2015-09-01 04:13:03

标签: yaml yaml-cpp

我通过引用yaml-cpp教程,使用yaml-cpp(版本0.5.2)演示了简单的示例代码来演示YAML加载/转储。转储结果文件不是我的预期。

  • 手动编辑YAML文件
# config.yaml file
lastLogin: 1441030476
password: "pass1234"
username: "admin"
  • 示例程序
#include <iostream>
#include <fstream>
#include <string>
#include <time.h>

#include "yaml-cpp/yaml.h"
int main()
{
  const char config_yaml[] = "config.yaml";
  YAML::Node config = YAML::LoadFile(config_yaml);

  if (config["lastLogin"]) {
    std::cout << "Last logged in: " << config["lastLogin"].as<int>() << "\n";
  }

  const std::string username = config["username"].as<std::string>();
  const std::string password = config["password"].as<std::string>();
  std::cout << "username: '" << username << "'" << std::endl;
  std::cout << "password: '" << password << "'" << std::endl;
  config["lastLogin"] = (int)time(0);
  std::ofstream fout(config_yaml);
  fout << config;
  return 0;
}
  • 生成的转储文件
# config.yaml file
lastLogin: 1441030476
password: !<!> pass1234
username: !<!> admindvp

正如您在上面生成的文件中看到的那样,string的值从引用更改为"!<!>"前缀字符串。   我的问题是在转储结果中字符串值之前的含义是"!<!>"。 以及我如何使用上面的示例制作yaml-cpp转储引用字符串。 Nodejs yamljs模块无法正确加载字符串,它将其识别为null,因此"!<!>"符号不能用于字符串。

1 个答案:

答案 0 :(得分:1)

这是yaml-cpp中的一个错误。请参阅项目网站上的https://sestevenson.wordpress.com/implementation-of-fir-filtering-in-c-part-1/