c++中vector的保存

OMGhandsome 2012-01-20 05:50:54
请教牛人,vector<class> vec; 或者vector<struct> vec;
这种类型的vector怎样保存到txt或bin文件啊。
好心人帮帮忙啊,祝春节快乐!
...全文
373 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
OMGhandsome 2012-01-20
  • 打赏
  • 举报
回复
class example {
public:
example() { }
~example(){ }

float p;
cv::Mat m;
};
比如这样的类型vector<example> vec; 其中的 矩阵m 是要一个元素一个元素拿出来保存吗,保存成一行?
昵称很不好取 2012-01-20
  • 打赏
  • 举报
回复
From 百度百科:
序列化是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。

比如打游戏打了一半想退出了,下次不想重新开始,就可以保存游戏中人物的状态到文件中,下次再读取文件,从上次结束的地方继续开打
平凡的思想者 2012-01-20
  • 打赏
  • 举报
回复
系列化一般是指以某种可描述的方式保存数据,内存对象数据到可描述方式保存。
反系列化从文件的可描述方式生成内存对象。

系列化常见模式:
文本方式如xml文件方式保存数据。
二进制方式如google protobuff。
OMGhandsome 2012-01-20
  • 打赏
  • 举报
回复
谢谢各位,序列化又不懂了,能解释下么?
昵称很不好取 2012-01-20
  • 打赏
  • 举报
回复

class Data{
private:
int hight;
int width;
public:
Data(int hight, int width):hight(hight),width(width){}
void get()const{cout<<"high: "<<hight<<" width: "<<width<<endl;}
friend ofstream &operator<<(ofstream &os, const Data& d){os<<d.hight<<d.width; return os;}
};

int main()
{
ofstream os("D:\\data.txt",ios::out);
vector<Data> vec;
int i;
for(i=0; i<10; ++i) vec.push_back(Data(i,i));
for(i=0; i<10; ++i) os<<vec[i];
os.close();

return 0;
}
Kaile 2012-01-20
  • 打赏
  • 举报
回复
纠正一下 tostring 改为 appendstring, 这样std::for_each(v.begin(), v.end(), one_sample); 会得到一个大的string,再保存这个string即可
Kaile 2012-01-20
  • 打赏
  • 举报
回复
首先class struct要提供序列化,或者 tostring的方法, 其次调用 std:for_each

例子:

class one_sample
{

public:


void operator()(const yourclass& x) { x.tostring(); }

};

std::for_each(v.begin(), v.end(), one_sample);
独自听枫 2012-01-20
  • 打赏
  • 举报
回复
这种结构比较复杂的最好要序列化再保存
Eleven 2012-01-20
  • 打赏
  • 举报
回复
遍历vector,然后取出结构体中的数据然后序列化,最后写入文件中。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧