使用yaml-cpp
读文件1
2
3
4
5
6
7
8
9
10YAML::Node gps_root;
try {
gps_root = YAML::LoadFile("/home/user/111.yaml");
} catch (YAML::ParserException &ex) {
std::cerr << "gps.yaml parse failed: " << ex.what() << std::endl;
exit(-1);
} catch (YAML::BadFile &ex) {
std::cerr << "gps.yaml load failed: " << ex.what() << std::endl;
exit(-1);
}
所用函数的源码:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18Node LoadFile(const std::string& filename) {
std::ifstream fin(filename.c_str());
if (!fin) {
throw BadFile();
}
return Load(fin);
}
Node Load(std::istream& input)
{
Parser parser(input);
NodeBuilder builder;
if (!parser.HandleNextDocument(builder)) {
return Node();
}
return builder.Root();
}
如果读文件失败,会抛出异常,不会运行到Load
,所以无法用IsDefined
函数判断是否读文件成功。