yaml-cpp —— C++ 项目配置工具入门
2011-10-04 11:18
344 查看
Reference
http://code.google.com/p/yaml-cpp/
What is yaml?
Here's a complete example of how to parse a complex YAML file:
monsters.yaml //这是yaml文件,后缀必须是yaml
1.类似于python,空白缩进表示一个结构。注意不是tab缩进。
2.以 - 开头,接下来的每一行都是这个结构的一个成员,也可以把多个成员写在同一行用[]标示。
main.cpp
http://code.google.com/p/yaml-cpp/
What is yaml?
YAML Ain't Markup Language, yaml不是标记语言。yaml命名是递归的,类似于GNU's Not Unix.
YAML is a human friendly data serialization standard for all programming languages.
yaml 用来编写项目的配置文件,优势如下,友好,简明:
http://zh-cn.w3support.net/index.php?db=so&id=1308536
http://www.ibm.com/developerworks/cn/xml/x-matters/part23/
A Complete Example
看懂这个完整的演示程序,yaml 就入门了。。。Here's a complete example of how to parse a complex YAML file:
monsters.yaml //这是yaml文件,后缀必须是yaml
- name: Ogre position: [0, 5, 0] powers: - name: Club damage: 10 - name: Fist damage: 8 - name: Dragon position: [1, 0, 10] powers: - name: Fire Breath damage: 25 - name: Claws damage: 15 - name: Wizard position: [5, -3, 0] powers: - name: Acid Rain damage: 50 - name: Staff damage: 3关于配置文件
1.类似于python,空白缩进表示一个结构。注意不是tab缩进。
2.以 - 开头,接下来的每一行都是这个结构的一个成员,也可以把多个成员写在同一行用[]标示。
main.cpp
#include "yaml-cpp/yaml.h" //安装yaml-cpp参考google code 主页 #include <iostream> #include <fstream> #include <string> #include <vector> // our data types //这个例子好像是取自开源游戏引擎ogre,随便说的 struct Vec3 { //位置坐标 float x, y, z; }; struct Power { //招式,魔法 std::string name; //招式名字,如 葵花宝典 int damage; //伤害值 }; struct Monster { //怪兽 std::string name; Vec3 position; std::vector <Power> powers; }; // now the extraction operators for these types //重载 >> 预算符。。。。 void operator >> (const YAML::Node& node, Vec3& v) { node[0] >> v.x; node[1] >> v.y; node[2] >> v.z; } void operator >> (const YAML::Node& node, Power& power) { node["name"] >> power.name; node["damage"] >> power.damage; } void operator >> (const YAML::Node& node, Monster& monster) { node["name"] >> monster.name; node["position"] >> monster.position; const YAML::Node& powers = node["powers"]; for(unsigned i=0;i<powers.size();i++) { Power power; powers[i] >> power; monster.powers.push_back(power); } } int main() //测试程序 { std::ifstream fin("monsters.yaml"); // 读入yaml配置文件。 YAML::Parser parser(fin); //yaml 分析输入的配文件。出错抛出YAML::ParserException YAML::Node doc; parser.GetNextDocument(doc); //doc 就是我们的yaml配置文件 for(unsigned i=0;i<doc.size();i++) {//i的实际值是0,1,2 ;关联yaml 中三个大的struct:ogre,dragon,wizard Monster monster; doc[i] >> monster; std::cout << monster.name << "\n"; } return 0; }
相关文章推荐
- apache log4j日志工具使用入门[maven 项目配置]
- 几个学习用的c语言开源项目 和c++工具
- Spring 、SpringMVC、Mybatis、MySQL、Maven、Tomcat搭建JavaWeb项目流程---学习笔记(一)工具准备及环境配置
- 《Visual C++ 2010入门教程》系列二:安装、配置和首次使用VS2010
- cocos2dx3.1.6配置到VS2013并编辑c++项目
- iOS:使用Github托管自己本地的项目代码方式一:(Xcode方式:开发工具Xcode配置Git,由Xcode-->Source Control-->Commit)
- springboot快速入门(二)——项目属性配置
- Android Studio新手–>下载安装配置–>零基础入门–>基本使用–>调试技能–>构建项目基础–>使用AS应对常规应用开发
- SSM项目从零开始到入门001-maven的安装与配置
- 【Java项目管理工具】maven安装配置
- PHP新手入门 二、Windows下PHP开发工具配置【原创】
- 安卓自动化测试入门-2-配置项目
- [转]SpringMVC框架入门配置 IDEA下搭建Maven项目
- 快速构建C++项目工具Scons,结合Editplus搭建开发环境
- SourceTree团队git项目工具入门(精简版)
- ceph存储 配置管理以及远程执行工具saltstack基础入门文档
- 新用到的一个c++项目编译构建工具---blade
- Python配置Houdini项目环境变量以及集成工具架
- SpringMVC框架入门配置 IDEA下搭建Maven项目