题
是否可以发出和读取(解析)二进制数据(图像、文件等)?如下所示:http://yaml.org/type/binary.html我怎样才能在 yaml-cpp 中做到这一点?
解决方案
由于修订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
肯定会解析数据作为字符串,但没有解码算法尚未。
其他提示
这里回答了如何使用 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();
然后你就有了一个具有已知大小“size”的字节“data”数组。
不隶属于 StackOverflow