【问题标题】:Save a YAML Emitter content to a file with YAML-CPP使用 YAML-CPP 将 YAML Emitter 内容保存到文件中
【发布时间】:2011-03-21 12:26:58
【问题描述】:

我刚开始使用 yaml-cpp,我设法正确构建它并运行 yaml-cpp wiki 中的一些示例,但我找不到将发射器保存到文件的方法。

这不可能吗?我的意思是 PyYAML 库为此提供了“转储”功能。 yaml-cpp中没有这样的功能吗? 是否有一些解决方法可以将 yaml 发射器转换为 stl 流,然后将其转储到 yaml 文件中?

请告诉我

谢谢, 亚当

【问题讨论】:

    标签: yaml-cpp


    【解决方案1】:

    函数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;
    

    【讨论】:

    • 只是好奇,你是怎么想出这种倾倒方法的?你在哪里学的这些东西。 yaml-cpp 的文档很短。
    • @JustinLiang 我写的 :) - 但你是对的,文档有点短。它在我的 TODO 清单上,但是,你知道...
    • @JesseBeder 有没有办法以与node相同的顺序保存它?
    • @JustinLiang - 不,还没有 - 请参阅 code.google.com/p/yaml-cpp/issues/detail?id=169
    • mmm,所以即使是大的 yaml 文件也必须先存储在内存中,然后才能将其转储到文件中?有没有办法直接将yaml构建到文件中?
    猜你喜欢
    • 2022-01-01
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-13
    • 2019-08-05
    • 2015-12-06
    • 1970-01-01
    相关资源
    最近更新 更多