2017-07-27 29 views
0

私はyaml-cppにはかなり新しいです。その後、tutorials、そのチュートリアルは正常です。しかし、自分のyamlファイルを解析しようとすると、それは私には難しいことです。私は "演算子"と "ノード"と混乱しています。
yamlファイルを以下に示す。yaml-cppのサンプル0.5.3 in Linux

Device: 
    DeviceName: "/dev/ttyS2" 
    Baud: 19200 
    Parity: "N" 
    DataBits: 8 
    StopBits: 1 
Control: 
    Kp: 5000 
    Ki: 8 
    FVF: 100 
    VFF: 1962 

yamlファイルからデータを取得する例はありますか?ご協力いただきありがとうございます。 また私はこれに続いてquestion、私はそれを構築することができます。悪い変換例外で結果上記

#include <yaml-cpp/yaml.h> 
#include <string> 
#include <iostream> 

using namespace std; 

int main() 
{ 
    YAML::Node config = YAML::LoadFile("init.yaml"); 
    //read device 
    std::string DeviceName = config["Device"][0]["DeviceName"].as<std::string>(); 
    int   Baud  = config["Device"][1]["Baud"].as<int>(); 
    std::string Parity  = config["Device"][2]["Parity"].as<std::string>(); 
    int   DataBits = config["Device"][3]["DataBits"].as<int>(); 
    int   StopBits = config["Device"][4]["StopBits"].as<int>(); 

    //read control 
    int Kp = config["Control"][0]["Kp"].as<int>(); 
    int Ki = config["Control"][1]["Ki"].as<int>(); 
    int FVF = config["Control"][2]["FVF"].as<int>(); 
    int VFF = config["Control"][3]["VFF"].as<int>(); 

    cout <<"DeviceName" << DeviceName << endl; 
    cout <<"Baud"  << Baud  << endl; 
    cout <<"Parity"  << Parity  << endl; 
    cout <<"DataBits" << DataBits << endl; 
    cout <<"StopBits" << StopBits << endl; 

    cout <<"Kp" << Kp << endl; 
    cout <<"Ki" << Ki << endl; 
    cout <<"FVF" << FVF << endl; 
    cout <<"VFF" << VFF << endl; 
    return 0; 
} 
+0

を書くあなたが使用しているコードを投稿してください。 –

+0

@JesseBeder、非常に遅く返事を申し訳ありません。私にいくつかの提案をお願いします。考える – crazymumu

答えて

0

あなたのコードあなたは間違った方法でマップアイテムにアクセスするので:私はそれを実行するとしかし、私はセグメンテーションフォールト(ダンプコア) コードを得ました。

代わりの

std::string DeviceName = config["Device"][0]["DeviceName"].as<std::string>(); 

はちょうど

std::string DeviceName = config["Device"]["DeviceName"].as<std::string>(); 

よろしく ロバート

関連する問題