2010-07-27 4 views
3

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

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

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

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

ответ

4

Функция 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; 
+0

Ах, что, кажется, сделать трюк ... Большое спасибо Джесси. Продолжайте хорошую работу!!! – somada141

+0

Лучшее редактирование когда-либо lol, только то, что мне нужно: D. –

+0

Любопытно, как вы выяснили этот метод демпинга? Где вы узнаете эти вещи. Документация для 'yaml-cpp' довольно короткая. –

Смежные вопросы