Сохраните содержимое генератора YAML в файл с помощью YAML-CPP - PullRequest
3 голосов
/ 27 июля 2010

Я только начал играть с yaml-cpp, мне удалось правильно его собрать и запустить некоторые примеры из вики yaml-cpp, но я не могу найти способ сохранить мой эмиттер в файл.

Разве это не возможно?Я имею в виду, что в библиотеке PyYAML для этого есть функция dump.Нет ли такой функциональности в yaml-cpp?Есть ли какой-нибудь способ обойти преобразование генератора yaml в поток stl и затем сбросить его в файл yaml?

Пожалуйста, дайте мне знать

Спасибо, Адам

1 Ответ

4 голосов
/ 28 июля 2010

Функция Emitter::c_str() возвращает определенную NULL строку в стиле C (которую вы не должны выпускать), которую затем можно записать в файл. Например:

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

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

Существует также Emitter::size(), который возвращает количество байтов в этой строке, если вы хотите сделать что-то более сложное и не хотите идти по строке, чтобы найти ее длину.

Если вы хотите просто сбросить Node в поток, есть ярлык:

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