C++yamlプロファイルを使用したプロセスレコード

2713 ワード

yamlの環境導入
参考記事:https://www.twblogs.net/a/5baaa2a12b7177781a0e5771/zh-cn 環境は使用までインストールして、強いことを参考にすることができます
yaml-cppのバージョンとソースgithub:https://github.com/jbeder/yaml-cpp/releases
環境導入プロセス:
1.ダウンロードバージョン、例えば:yaml-cpp-yaml-cpp-0.6.2
2.linuxで解析し、ディレクトリに入り、コードディレクトリの下にbuildフォルダを作成する
3.次の4つのコマンドはwikiの中のを参考にして、もし成功すればbuildの中でlibyaml-cpp.aのファイルを生成します
cd build
cmake ..
make
make install
4.usr/local/lib/libyaml-cpp.aが存在するかどうかを見て、上のmakeが成功すれば、あります.wikiのfindを参考にしていなければどこにあるか見てみましょう
 
二コンパイル実行
例wikiの中のを参考にすればいい、>>の重荷重は削除できるが、あまり提案されていないので、as()のように変換して値をつけたほうがいい.
コンパイルコマンド:g++-g-std=c++11 robot.cpp/usr/local/lib/libyaml-cpp.a
コマンドを実行./a.out
3つの重要なプログラミングポイント
#include "yaml-cpp/yaml.h" //  yaml-cpp  google code   
#include 
#include 
#include 
#include 

typedef struct TagCameraConfigInfoS {
    int cameraId;
    bool isStitch;
    int stFullSizeW;
}CAMERA_CONFIG_INFO_S;
int main()
{
    std::ifstream fin("cameracfg.yaml"); //   yaml    。
    try {
        // load yaml file
        YAML::Node doc = YAML::Load(fin);
        if (!doc["cameras"]) {
            printf("the cameras nodes doesn't exist
"); return -1; } // parse cameras params std::string sc = "cameras"; YAML::Node camerasNode = doc[sc]; for (unsigned int i = 0; i < camerasNode.size(); i++) { const YAML::Node& cNode = camerasNode[i]; std::cout << cNode << "
"; std::cout << "===================" << std::endl; CAMERA_CONFIG_INFO_S camS; camS.cameraId = (i+1); camS.isStitch = cNode["isStitch"].as(); if (cNode["fullSizeWidth"]) { camS.stFullSizeW = cNode["fullSizeWidth"].as(); } else { printf("some camera loss fullSizeWidth param"); return -1; } } std::cout << "parse end!" << std::endl; } catch (const YAML::Exception& e) { printf("when parsing camera config yaml file error!
"); std::cerr << e.what() << "
"; return -1; } return 0; }

四.対応するyamlファイル
#Camera Config
cameras:
  - cameraName: FRONT_1
    cameraType: 1
    isStitch: false
    fullSizeWidth: 2048

  - cameraName: FRONT_2
    cameraType: 2
    isStitch: true
    fullSizeWidth: 2048