2010-07-27 8 views
3

Je viens de commencer à jouer avec yaml-cpp, j'ai réussi à le construire correctement et à exécuter certains des exemples du wiki yaml-cpp mais je ne trouve pas de façon de sauvegarder mon émetteur dans un fichier.Enregistrer un contenu YAML Emitter dans un fichier avec YAML-CPP

N'est-ce pas possible? Je veux dire que la librairie PyYAML a une fonction de "vidage" pour cela. Y a-t-il une telle fonctionnalité dans yaml-cpp? Existe-t-il une solution de contournement pour convertir un émetteur yaml en flux stl, puis en le vidant dans un fichier yaml?

S'il vous plaît laissez-moi savoir

Merci, Adam

Répondre

4

La fonction Emitter::c_str() retourne une chaîne NULL à terminaison de type C (que vous n'avez pas à libérer), que vous pouvez ensuite écrire dans un fichier . Par exemple:

YAML::Emitter emitter; 
emitter << "Hello world!"; 

std::ofstream fout("file.yaml"); 
fout << emitter.c_str(); 

Il y a aussi Emitter::size(), qui renvoie le nombre d'octets dans cette chaîne, si vous voulez faire quelque chose de plus avancé et ne veulent pas marcher la chaîne à trouver sa longueur.

Si vous voulez jeter juste un Node à un flux, il y a un raccourci:

YAML::Node node = ...; 
std::ofstream fout("file.yaml"); 
fout << node; 
+0

Ah qui semble faire l'affaire ... Merci beaucoup Jesse. Continuez votre bon travail !!! – somada141

+0

Meilleur edit jamais lol, juste ce dont j'avais besoin: D. –

+0

Juste curieux, comment avez-vous trouvé cette méthode de dumping? Où apprenez-vous ces choses? La documentation de 'yaml-cpp' est assez courte. –