是否可以发出和读取(解析)二进制数据(图像,文件等)? 像这样显示在这里: http://yaml.org/type/binary.html 我怎么能在yaml-cpp中做到这一点?
答案 0 :(得分:2)
截至revision 425,是的! (用于发射)
YAML::Emitter emitter;
emitter << YAML::Binary("Hello, World!", 13);
std::cout << emitter.c_str();
输出
--- !!binary "SGVsbG8sIFdvcmxkIQ=="
语法是
YAML::Binary(const char *bytes, std::size_t size);
我不确定如何传递字节数组:char
不一定是一个字节,所以我不确定算法是多么可移植。您的字节数组通常采用什么格式?
(问题是uint8_t
还不是标准的C ++,所以我有点担心使用它。)
至于解析,yaml-cpp
肯定会将数据解析为字符串,但还没有解码算法。
答案 1 :(得分:1)
这里回答了如何使用yaml-cpp库从yaml文件读取/解析二进制数据。
这个答案假定您能够从yaml文件加载YAML :: Node节点对象 - 在yaml-cpp教程中解释:https://github.com/jbeder/yaml-cpp/wiki/Tutorial)。
从yaml节点解析二进制数据的代码是:
YAML::Binary binary = node.as<YAML::Binary>();
const unsigned char * data = binary.data();
std::size_t size = binary.size();
然后你有一个字节数组&#34;数据&#34;已知大小&#34;尺寸&#34;。