无法使用 yaml-cpp 发出空值
Can't Emit an Empty Value with yaml-cpp
我想发出一个空值,但是当我分配一个要发出的空字符串时,输出在技术上不是空的。
代码片段:
YAML::Emitter out;
std::string name;
out << YAML::Key << "name";
out << YAML::Value << name;
预期的 yaml 输出:
name:
实际 yaml 输出:
name: ""
如您所见,我定义了一个空字符串,我希望 yaml 输出实际上为空。
这是有意的行为吗?如果是这样,有没有办法解决这个问题?我的目标是让我的整个 yaml 输出都是免费的。
YAML
name:
键 name
没有字符串值;它实际上是一个空值。参见,例如,在线解析器 here;规范的 YAML 表示是:
!!map {
? !!str "name"
: !!null "null",
}
yaml-cpp 试图确保您告诉它的内容 ("write this empty string") 是结果 YAML 的解析方式,因此它将空字符串写为 ""
.
如果要写空值,那么要么不写值,要么写YAML::Null
。后者(我相信)会产生
name: ~
这是 null 的规范形式。
我想发出一个空值,但是当我分配一个要发出的空字符串时,输出在技术上不是空的。
代码片段:
YAML::Emitter out;
std::string name;
out << YAML::Key << "name";
out << YAML::Value << name;
预期的 yaml 输出:
name:
实际 yaml 输出:
name: ""
如您所见,我定义了一个空字符串,我希望 yaml 输出实际上为空。 这是有意的行为吗?如果是这样,有没有办法解决这个问题?我的目标是让我的整个 yaml 输出都是免费的。
YAML
name:
键 name
没有字符串值;它实际上是一个空值。参见,例如,在线解析器 here;规范的 YAML 表示是:
!!map {
? !!str "name"
: !!null "null",
}
yaml-cpp 试图确保您告诉它的内容 ("write this empty string") 是结果 YAML 的解析方式,因此它将空字符串写为 ""
.
如果要写空值,那么要么不写值,要么写YAML::Null
。后者(我相信)会产生
name: ~
这是 null 的规范形式。