如何将矢量<矢量<矢量> >保存在<float>文件中并检索数据?
How to save vector<vector<vector<float> > > in a file and retrieve data?
我需要将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
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- 如何防止clang格式在流运算符调用之间添加换行符<<
- <<操作员在下面的行中工作
- EASTL矢量<向量<int>>连续的
- C - 创建矢量&lt; vector&lt; double&gt;&gt;矩阵具有分配而不是inizializ
- 为什么将此对向量&lt; map&lt; int,int&gt;&gt;中的地图进行更新.失败
- C :对矢量进行排序&lt; struct&gt;(结构有2个整数)基于结构的整数之一
- 明确的专业化“ CheckIntmap&lt;&gt;”实例化
- 什么是模板&lt;&gt;inline bla bla
- 编辑C Qlist&lt; object*&gt; gt;QML代码和一些QML警告中的模型
- eigen :: llt&lt;eigen :: matrixxd&gt;具有不完整的类型
- 错误,包括&lt; ctype&gt;在原子上使用C 11
- std::vector<;uint8_t>;当C++11/14启用时,手动复制而不是调用memcpy
- 如何加入向量&lt; int&gt;到C 中的单个INT
- 是std :: set&lt; std :: future&gt;不可能存在
- 是numeric_limits&lt; int&gt; :: is_modulo从逻辑上矛盾
- opencv 2.4.7在iOS错误背景_segm.hpp #include&lt; list&gt;未找到
- 在修改列表后,std :: list&lt; t&gt; :: end()的值是否会更改
- ///<评论></评论>在Visual Studio中