我想将标量解析为bool。 这个例子的工作原理:如何重载operator >> for bool
#include <yaml.h>
#include <iostream>
#include <sstream>
#include <string>
void operator>> (const YAML::Node & node, bool & b)
{
std::string tmp;
node >> tmp;
std::cout << tmp << std::endl;
b = (tmp == "1") || (tmp == "yes");
}
int main()
{
bool b1, b2;
std::stringstream ss("key: да\notherkey: no");
YAML::Parser parser(ss);
YAML::Node doc;
parser.GetNextDocument(doc);
doc["key"] >> b1;
doc["otherkey"] >> b2;
std::cout << b1 << std::endl;
std::cout << b2 << std::endl;
return 0;
}
但在更复杂的情况下,运营商的模板使用:
YAML::operator>><bool> (node=..., [email protected]) at /usr/include/yaml-cpp/nodeimpl.h:24
而且我不“是”或“没有”得到“YAML :: InvalidScalar”如果字符串。
哇。我在命名空间YAML {}中包围了我的重载运算符。现在它可以工作... – Igor