很简单,答对就给分了!

solaFighting 2007-10-28 09:16:46
// 14.11.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include "person.h"
using namespace std;
void write(ofstream& out,person per);
void read (ifstream& in,person per);
int main()
{
person a=
{
"aa","bb","1"
};
ofstream out("persons.txt",ios::out|ios::binary);

write(out,a);
out.close();
person b={"d","d","2" };
ifstream in("persons.txt",ios::in|ios::binary);

read(in,b);
cout<<b.firstName<<b.lastName;
return 0;
}
void write(ofstream& out,person per)
{
out.write(reinterpret_cast<char*>(&per),sizeof(per));
}
void read (ifstream& in,person per)
{
in.read(reinterpret_cast<char*>(&per),sizeof(per));
}

我是想把一个类用二进制的 形式写到文件里,然后再读出来。
可是运行之后,我发现我的类不是用二进制的形式写进去的,而是那种未格式化的写进去了。。
而且我也读不出来。
是怎么回事呢?
我应该怎么写哟?
...全文
117 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
星羽 2007-10-28
  • 打赏
  • 举报
回复
呵呵

可以加我的交流群 : 6541168

:)
solaFighting 2007-10-28
  • 打赏
  • 举报
回复
晕,算了。
我只是想认识下高手。好像成了流氓一样。
ilovevvv 2007-10-28
  • 打赏
  • 举报
回复
我是进来看星星被调戏的..
星羽 2007-10-28
  • 打赏
  • 举报
回复
不给q就不给你分。

--------------


- -b - -b - -b

solaFighting 2007-10-28
  • 打赏
  • 举报
回复
不给q就不给你分。
solaFighting 2007-10-28
  • 打赏
  • 举报
回复

你太伟大了!要下你qq行不?
真想认识你这样的人!
星羽 2007-10-28
  • 打赏
  • 举报
回复
上面给你改了

你的错误有2

1)

你没给出你的 person 的定义,但我猜想里面应该

有类似

char* firstName; 的成员

这是个指针

当你写如文件的时候, 写进去的是这个指针的值,一个32位的数,而不是字符

所以要改成 char firstName[128]的数组


2)

你的 wirte 和 read 函数传入的person 是值,应该改成

引用 person&
星羽 2007-10-28
  • 打赏
  • 举报
回复


#include "stdafx.h"
#include <iostream>
#include <fstream>

using namespace std;

struct person {

char firstName[128];
char lastName[128];
char number[8];

person(const char s1[], const char s2[], const char s3[])
{
strncpy(firstName, s1, sizeof(firstName));
strncpy(lastName, s2, sizeof(lastName));
strncpy(number, s3, sizeof(number));
}

};

void write(ofstream& out, person& per);
void read (ifstream& in, person& per);

int main()
{
person a("aa", "bb", "1");
ofstream out("persons.txt",ios::out | ios::binary);

write(out,a);
out.close();

person b("d", "d", "2");
ifstream in("persons.txt",ios::in | ios::binary);

read(in,b);
cout <<b.firstName <<b.lastName;
return 0;
}

void write(ofstream& out, person& per)
{
out.write(reinterpret_cast <char*>(&per),sizeof(per));
}

void read (ifstream& in, person& per)
{
in.read(reinterpret_cast <char*>(&per), sizeof(per));
}
solaFighting 2007-10-28
  • 打赏
  • 举报
回复
怎么没给出解决方法呢?
而且你说的我没太听懂。。。
100分哪!
星羽 2007-10-28
  • 打赏
  • 举报
回复
因为你的 person 结构里函授 指针(字符串指针)成员,

所以你写入的是指针,并不是真正的数据
【更新至2025年】2001-2025年上市公司数字化转型年报词频统计(吴非、赵宸宇、甄红线)(300+年报词频统计) 1、时间:2001-2025年 2、来源:上市公司年报 3、参考文献:企业数字化转型与资本市场表现——来自股票流动性的经验证据(吴非) 数字化转型如何影响企业全要素生产率(赵宸宇) 知识产权行政保护与企业数字化转型(甄红线) 4、方法说明:(1)参考吴非老师的做法,对人工智能技术、大数据技术、云计算技术、区块链技术、数字技术运用五个维度76个数字化相关词频进行统计 (2)参考赵宸宇老师的做法,对数字技术应用、互联网商业模式、智能制造、现代信息系统四个维度99个数字化相关词频进行统计 (3)参考甄红线老师的做法,对技术类、组织赋能、数字化应用等类别下139个数字化相关词频进行统计 5、指标:年份、股票代码、公司简称、行业名称、行业代码、全文-文本总长度、仅中英文-文本总长度、人工智能技术-吴、大数据技术-吴、云计算技术-吴、区块链技术-吴、数字技术运用-吴、数字技术应用-赵、互联网商业模式-赵、智能制造-赵、现代信息系统-赵、技术类-人工智能技术-甄、技术类-区块链技术-甄、技术类-云计算技术-甄、技术类-大数据技术-甄、组织赋能-人工智能技术-甄、组织赋能-云计算技术-甄、组织赋能-大数据技术-甄、组织赋能-广义数字技术-甄、数字化应用-技术创新-甄、数字化应用-流程创新-甄、数字化应用-业务创新-甄、人工智能、商业智能、图像理解、投资决策辅助系统、智能数据析、智能机器人、机器学习、深度学习、语义搜索、生物识别技术、人脸识别、语音识别、身份验证、自动驾驶、自然语言处理、大数据、数据挖掘、文本挖掘、数据可视化、异构数据、征信、增强现实、混合现实、虚拟现实、云计算、流计算、图计算、内存计算、多方安全计算、类脑计算、绿色计算、认知计算等300+词频

33,316

社区成员

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

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