2015-09-10 42 views
5

Bir yaml usign yaml-cpp'yi ayrıştırmaya çalışıyorum. Ben mesajı alıyorumyaml ile yaml cpp ile ayrıştırma

YAML::Node basenode = YAML::LoadFile("./path/to/file.yaml"); 
int height; 
if(basenode["configuration"]) 
    if(basenode["configuration"]["height"] 
     height = basenode["configuration"]["height"].as<int>(); 
    else 
     cout << "The node height doesn't exist" << endl; 
else 
    cout << "The node configuration doesn't exist" << endl; 

yaptığınızda

--- 
configuration: 
    - height: 600 
    - widht: 800 
    - velocity: 1 
    - scroll: 30 
types: 
    - image: resources/images/grass.png 
    name: grass 
    - image: resources/images/water.png 
    name: water 
version: 1.0 

: Bu benim yaml olan "düğüm yüksekliği yok". Bu alana nasıl erişebilirim (ve diğerleri?)

Çok teşekkürler!

cevap

4

- ile kullandığınız sözdizimi dizi elemanları oluşturur.

{configuration: [{height: 600}, {width: 800}, {velocity: 1}, {scroll: 30}]} 

Ama ne istediğiniz geçerli::

{configuration: {height: 600, width: 800, velocity: 1, scroll: 30}} 

Neyse ki çözüm kolaydır Bu (JSON gösterimde) oluştururken anlamına gelir. nasıl yapacağınız merak ediyorsanız ben de

version: 1.0 önce yabancı bir boşluk genişlik Genişliği bir yazım hatası sabit ve kaldırdık

--- 
configuration: 
    height: 600 
    width: 800 
    velocity: 1 
    scroll: 30 
types: 
    - image: resources/images/grass.png 
    name: grass 
    - image: resources/images/water.png 
    name: water 
version: 1.0 

Not: Sadece hatalı - karakterleri kaldırmak

int height = basenode["configuration"][0]["height"].as<int>(); 
int height = basenode["configuration"][1]["width"].as<int>(); 

Açıkçası bu rathe olacaktır: şu anda olduğu gibi aslında bir dizi erişimi yapmak zorunda kalacaktı yapılandırmanızı erişmek Eğer gerçekten bunu kullanmak istedim, çünkü artık anahtarlar kullanmayacaksınız, fakat sipariş meselesine sahip olmanız ya da dizi seviyesinden kurtulmak için konfigürasyonu yeniden işlemeniz gerektiği anlamına gelir.

+0

Kafamı temizlemek için @Corbin teşekkür ederim! harika çalışıyor! Çok fazla doküman ve örnek bulamadım! – jmoren