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つの重要なプログラミングポイント
四.対応する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