2014-04-16 17 views
6

Sono molto nuovo su yaml-cpp, ho provato il programma più semplice ma non sono riuscito e non ho trovato risposta dal sito web di google/github dell'autore.Come caricare il file YAML via yaml-cpp?

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

using namespace std; 

int main() 
{ 
    YAML::Node config = YAML::LoadFile("sample.yaml"); 
    return 0; 
} 

sample.yaml campione dal sito ufficiale di YAML

 
--- !clarkevans.com/^invoice 
invoice: 34843 
date : 2001-01-23 
bill-to: &id001 
    given : Chris 
    family : Dumars 
    address: 
     lines: | 
      458 Walkman Dr. 
      Suite #292 
     city : Royal Oak 
     state : MI 
     postal : 48046 
ship-to: *id001 
product: 
    - sku   : BL394D 
     quantity : 4 
     description : Basketball 
     price  : 450.00 
    - sku   : BL4438H 
     quantity : 1 
     description : Super Hoop 
     price  : 2392.00 
tax : 251.42 
total: 4443.52 
comments: > 
    Late afternoon is best. 
    Backup contact is Nancy 
    Billsmer @ 338-4338. 

Il messaggio di errore è dato in questo modo:

libC++ abi.dylib: termina con eccezione non identificata di tipo YAML :: BadFile: yaml-cpp: errore alla riga 0, colonna 0: file errato

Posso sapere qual è il problema? È un problema di costruzione della libreria o problema di sintassi YAML o problema dell'API?

Ambiente di sviluppo

MacOSX10.9c++11IDE:QtCreator3.0.1yaml-cpp 0.5.1


[Risolto]
ho fatto stupido errore che ho caricato strada sbagliata di sample.yaml.

risposta

2

Sembra che yaml-cpp non riesca a trovare il file. Sei stato in grado di caricare qualsiasi file? Assicurati che il file si trovi nella directory di lavoro del tuo programma e, per motivi di sicurezza, assicurati di poter caricare prima un file molto semplice.

+0

grazie a @Jesse. Il mio stupido errore, il problema del percorso sample.yaml. – user001

6

Penso che il parser YAML nella versione di yaml-cpp che si sta utilizzando non sia abbastanza avanzato da poter gestire la prima riga del file di esempio. Il file di esempio sta cercando di illustrare alcune delle funzionalità YAML più avanzate. Sembra che il tuo parser non li possa gestire tutti. Ti suggerisco di iniziare con un file di esempio più semplice.

ho controllato il file con tre validatori in linea con i seguenti risultati:

Senza dubbio la il file è YAML valido ma ciò non significa che tutti i parser esistenti possano analizzarlo!

+0

Grazie per la spiegazione. 'yaml-cpp' 0.5.1 supporta Yaml1.2, quindi supposi che potesse capire' sample.yaml'. Proverò qualche file yaml con la sintassi 1.0 in seguito. – user001

+0

su voto anche, grazie per aver fornito informazioni utili. – user001