是否可以发出和读取(解析)二进制数据(图像、文件等)?如下所示: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”数组。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top