struct结构里面有vector,直接保存struct时,vector是指针么?

livelyimp 2014-12-23 08:52:57
struct testSt
{
vector<int> v_i;
};

void main()
{
//============================================
testSt tSt1;
tSt1.v_i.push_back(1);
tSt1.v_i.push_back(2);

testSt tSt2;
tSt2.v_i.push_back(3);

fout.open("c:\\a.txt");

fout.write((char *)(&tSt1), sizeof(a));
fout.write((char *)(&tSt2), sizeof(a));

这里读出来没有问题,


fout.close();

tSt1.v_i[0] = 3;
tSt1.v_i[1] = 4;

这里重新复制过后,即使没有写入文件,读出来也是新的值,即3和4了

testSt tempSt;
fin.open("c:\\a.txt");
fin.read((char *)(&tempSt), sizeof(a));
fin.read((char *)(&tempSt), sizeof(a));

fin.close();



}

这个有解决办法么,还是要vector里面逐项往文件写啊?
...全文
484 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ultra_sonic 2014-12-25
  • 打赏
  • 举报
回复
vecotr是对象,放在Struct里面很不合适。用法更是完全错了
赵4老师 2014-12-23
  • 打赏
  • 举报
回复
vector是对象,不是一段内存,不适合放在struct中。
ztenv 版主 2014-12-23
  • 打赏
  • 举报
回复
针对非自己的对象内容,还是一条一条写比较好。如果是自己写的,就重写一具操作符或增加一个读写的函数即可
FightForProgrammer 2014-12-23
  • 打赏
  • 举报
回复
没弄明白lz标题和内容的意义
starytx 2014-12-23
  • 打赏
  • 举报
回复
最好是逐项往里写,读出来逐项插入定义的struct的vector里
yangyunzhao 2014-12-23
  • 打赏
  • 举报
回复
存的时候转换为原始的数组,读的时候再解析为vector。 不过这么费劲,干嘛不用protobuf呢?要不json

65,183

社区成员

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

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