如何将矢量<矢量<矢量> >保存在<float>文件中并检索数据?

How to save vector<vector<vector<float> > > in a file and retrieve data?

本文关键字:lt gt 矢量 文件 检索 数据 float 存在 保存      更新时间:2023-10-16

我需要将vector<vector<vector<float> > >的内容保存到一个文件中,然后检索正确位置的所有值。

建议吗?

看看boost序列化库

如果你想自己做,你可以这样做:

std::ofstream file("floats.bin", std::ios::binary);
std::vector<float> f;
std::size_t n = f.size();
// save the size of the vector so you know how much to read
// when you load from file
file.write( reinterpret_cast<char*>( &n ), sizeof(n) );
// write the data
file.write( reinterpret_cast<char*>( f.data() ), sizeof(float) * n );

你需要对每个内向量都这样做。文件格式的具体细节由您来决定。但是一定要考虑不同大小的数据类型。

要读回数据,首先读取大小信息,相应地调整vector的大小,然后执行ifstream::read.

您可以将其以字节为单位写入二进制文件。然后,当你把它读入时,你可以把它读入一个字符数组,并将其强制转换为你的类型。

查看http://courses.cs.vt.edu/cs2604/fall02/binio.html

解决了,谢谢

#include <boost/archive/binary_iarchive.hpp>
#include <boost/archive/binary_oarchive.hpp>
#include <boost/serialization/string.hpp> 
#include <boost/serialization/export.hpp> 
#include <boost/serialization/vector.hpp>
#include <boost/serialization/list.hpp>
void saveFeaturesFile(vector<vector<vector<float> > > &features, string filename){ 
    ofstream out(filename.c_str());
    stringstream ss;
    boost::archive::binary_oarchive oa(ss); 
    oa << features;
    out << ss.str();
    out.close();    
}
void loadFeaturesFile(vector<vector<vector<float> > > &features, string filename){
    ifstream in(filename.c_str());
    boost::archive::binary_iarchive ia(in); 
    ia >> features;    
    in.close();
}

和联系-lboost_iostreams -lboostrongerialization