我需要将 a 的内容保存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 );
您需要对每个内部向量执行此操作。由您决定文件格式的确切细节。不过,请务必考虑不同大小的数据类型。
要读回数据,您首先要读取大小信息,相应地调整向量的大小,然后执行ifstream::read。
您可以将其以字节为单位写入二进制文件。然后,当您将其读回时,您可以将其读回 char 数组并将其转换为您的类型。
解决了,谢谢
#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 -lboost_serialization