我想在我的应用程序中测试序列化的数据转换,当前该对象存储在文件中,并读取二进制文件并重新加载该对象。
在我的单元测试用例中,我想测试此操作。由于文件操作成本很高,因此我想在代码本身中对二进制文件内容进行硬编码。
我怎样才能做到这一点?
目前,我正在尝试这样,
std::string FileContent = "\00\00\00\00\00.........";
而且它不起作用。
没错,字符串可以包含'\0'
,但是在这里您仍要从中对其进行初始化const char*
,根据定义,该字符串将从第一个停止'\0'
。我建议您使用uint8_t[]
甚至使用uint32_t[]
(即不传递给std::string
),即使第二个可能有多达3个字节的开销(但在源代码中则更紧凑)。例如,这就是通常存储X位图的方式。
另一种可能性是base64编码,它可以打印,但需要(相对较快)解码。
如果你真的想放const char[]
一个std::string
,先转换指针const char*
,然后使用两个迭代器的构造函数std::string
。虽然std::string
可以保留'\0'
,但将二进制存储在字符串中是一种反模式,因此我没有给出确切的代码,只是给出了提示。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句