スカラーをブールとして解析したい。この例は機能します:
#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=..., value=@0x63f6e8) at /usr/include/yaml-cpp/nodeimpl.h:24
そして、文字列が「はい」または「いいえ」でない場合、「YAML::InvalidScalar」を取得します。