我试图将std::vector<bool>的内容写入一个二进制文件中。由于许多STL输出流的write()方法接受指向数组本身的指针,以及要写入的字节数,所以我最终会执行如下操作:
std::vector<unsigned int> dataVector = {0, 1, 2, 3, 4};
std::fstream outStream = std::fstream("vectordump.bin", std::ios::out | std::ios::binary);
outStream.write((char*) dataVector.data(), dataVector.size() * sizeof(unsigned int));
outStream.close();但是,std::vector<bool>是一个特例,因为STL实现允许将bools打包到单个位中。因此,上述方法在技术上并不一致,因为它没有具体说明数据是如何精确地放置在内存中的。
是否有任何方法可以序列化/反序列化我的bool载体而不必打包/解压缩数据?
发布于 2019-12-10 13:18:22
我认为你最好把这个向量转换成std::vector<std::byte>/std::vector<unsigned char>。
std::vector<bool>甚至不需要有连续的内存,所以从data()开始编写也是定义的。
发布于 2019-12-10 13:17:25
不,没有。
抱歉的。
一个很好的理由来避免这个容器!
https://stackoverflow.com/questions/59268058
复制相似问题