【新手求助】关于顺序表的文件读入

Hehuyi_In
数据库领域优质创作者
博客专家认证
2014-09-30 12:43:23
题目要求可以从文件中写和读,读出后再按7可以输出所有学生信息,但是我每次从文件中读出后就只剩下第一个学生的信息了(有时还有一个空白信息)T_TT_T,求各位教导!!

新手刚学C++没多久,求指教各种错误

代码如下:
http://codepad.org/e8RL8tFt
...全文
444 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ri_aje 2014-10-03
  • 打赏
  • 举报
回复
引用 5 楼 Hehuyi_In 的回复:
[quote=引用 4 楼 ri_aje 的回复:] 读写函数有错误。std::string 不能通过这种方式读写:

  fop.write((char*)&stu[i],sizeof(stu[i]));
这样直接复制内存的方法只对 pod 类型有效,比如整形,浮点,字符数组之类的。std::string 是类类型,需要把其对应的字符串写入文件才行,比如:

  fop.write(stu[i].name.c_str(),stu[i].name.size());
其他的以此类推。reader 和 writer 达成协议,按照固定的格式写即可。
你好,想请问一下你的意思是要把上面那行代码改成: fop.write(stu[i].name.c_str(),stu[i].name.size()); fop.write(stu[i].num.c_str(),stu[i].num.size()); fip.read(stu[i].name.c_str(),stu[i].name.size()); fip.read(stu[i].num.c_str(),stu[i].num.size());这种形式吗??[/quote] write 可以,read 不行,因为在读入信息之前,你不知到应该读入多少个字符。为了配合 read,write 还需要把下面将要读入的字符串长度先写入,然后再写该字符串本身。 另外你要不是非得用这种类似于二进制的存储格式,直接用 iostream 按行输出是最简单的了。比如

fop << stu[i].name << std::endl;
fop << stu[i].num << std::endl;
这样每一个成员变量存在自己单独的行上,然后读取的时候按行读就行了。

std::string name;
int id;
fip >> name;
fip >> id;
Hehuyi_In 2014-10-02
  • 打赏
  • 举报
回复
引用 4 楼 ri_aje 的回复:
读写函数有错误。std::string 不能通过这种方式读写:

  fop.write((char*)&stu[i],sizeof(stu[i]));
这样直接复制内存的方法只对 pod 类型有效,比如整形,浮点,字符数组之类的。std::string 是类类型,需要把其对应的字符串写入文件才行,比如:

  fop.write(stu[i].name.c_str(),stu[i].name.size());
其他的以此类推。reader 和 writer 达成协议,按照固定的格式写即可。
你好,想请问一下你的意思是要把上面那行代码改成: fop.write(stu[i].name.c_str(),stu[i].name.size()); fop.write(stu[i].num.c_str(),stu[i].num.size()); fip.read(stu[i].name.c_str(),stu[i].name.size()); fip.read(stu[i].num.c_str(),stu[i].num.size());这种形式吗??
ri_aje 2014-10-02
  • 打赏
  • 举报
回复
读写函数有错误。std::string 不能通过这种方式读写:

  fop.write((char*)&stu[i],sizeof(stu[i]));
这样直接复制内存的方法只对 pod 类型有效,比如整形,浮点,字符数组之类的。std::string 是类类型,需要把其对应的字符串写入文件才行,比如:

  fop.write(stu[i].name.c_str(),stu[i].name.size());
其他的以此类推。reader 和 writer 达成协议,按照固定的格式写即可。
Hehuyi_In 2014-10-01
  • 打赏
  • 举报
回复
T_TT_T求人啊!!!
Hehuyi_In 2014-09-30
  • 打赏
  • 举报
回复
翻了好久书,也上网查了,但是还不知道错在哪里,跪求各位大神指教!!
Hehuyi_In 2014-09-30
  • 打赏
  • 举报
回复
输入两个学生信息然后输出

把信息写入文件,输出(此时还是有两个学生的信息)

从文件中读信息,输出(学生信息全都不见了)

HELP~~~~~~~

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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