c++-关于C++文件的读写read和write问题!

问题描述

关于C++文件的读写read和write问题!

第一个:这样写读出结果会对,但是有时候也会出错。换成中文的有时也会出错。
#include
#include
#include

using namespace std;

class People
{
private:
struct
{
string name;
string weight;
string tall;
string sex;
}people;
public:
People(){}
People(string name, string weight, string tall, string sex)
{
people.name=name;
people.weight=weight;
people.tall=tall;
people.sex=sex;
}
string get_Name()
{
return people.name;
}
string get_Sex()
{
return people.sex;
}
};

int main()
{
fstream file;
file.open("people.txt",ios::out|ios::binary);
People pe("aaa","bbb","ccc","sda");
People pe2;
file.write(reinterpret_cast(&pe),sizeof(pe));
file.close();
file.open("people.txt",ios::in|ios::binary);
file.read(reinterpret_cast(&pe2),sizeof(pe2));
cout<<pe2.get_Sex()<<" "<<pe2.get_Name();
file.close();
return 0;
}

第二种:是第一种写的文件读出来,为什么就会出错?
#include
#include
#include

using namespace std;

class People
{
private:
struct
{
string name;
string weight;
string tall;
string sex;
}people;
public:
People(){}
People(string name, string weight, string tall, string sex)
{
people.name=name;
people.weight=weight;
people.tall=tall;
people.sex=sex;
}
string get_Name()
{
return people.name;
}
string get_Sex()
{
return people.sex;
}
};

int main()
{
fstream file;
People pe2;
file.open("people.txt",ios::in|ios::binary);
file.read(reinterpret_cast(&pe2),sizeof(pe2));
cout<<pe2.get_Sex()<<" "<<pe2.get_Name();
file.close();
return 0;
}

解决方案

string是动态类型,你sizeof方式求大小会有问题,造成数据读取不对。
结构体要用基本数据类型。

解决方案二:

能解释下为什么吗?还有我现在改成基本类型了。这个例子可以了。我还有另外一个例子,可以写,但是不可以读。能帮我看下吗?谢谢!
#include
#include
#include
#include

using namespace std;

const int NUM=1000;
static int employeerNum=0;
static int loadNum=0;

class Employeer
{
private:
struct
{
char name[30];
char gender[10];
char dateofbirth[30];
char category[30];
}employeerInfor;
public:
Employeer(char name[],char gender[],char dateofbirth[],char category[])
{
strcpy(employeerInfor.name,name);
strcpy(employeerInfor.gender,gender);
strcpy(employeerInfor.dateofbirth,dateofbirth);
strcpy(employeerInfor.category,category);
}//构造函数
char *Get_name()
{
return employeerInfor.name;
}
char *Get_gender()
{
return employeerInfor.gender;
}
char *Get_dateofbirth()
{
return employeerInfor.dateofbirth;
}
char *Get_category()
{
return employeerInfor.category;
}
virtual float computeSalary()=0;//纯虚函数
friend void Save(int i);
friend int ReadDate();
};

Employeer *employeer[NUM];

int ReadDate()
{
fstream outFile;
outFile.open("Manager.txt",ios::in|ios::binary);
if(outFile.fail())
{
return 0;
}
else
{
int i=loadNum;
while(!outFile.eof())
{
outFile.read((char *)&employeer[i]->employeerInfor,sizeof(employeer[i]->employeerInfor));
i++;
}
cout<<loadNum;
loadNum=i-1;
employeerNum=loadNum;//加载完成,总数变化
}
outFile.close();
}
int main()
{
ReadDate();
return 0;
}

时间: 2024-10-29 11:36:33

c++-关于C++文件的读写read和write问题!的相关文章

Java 中对文件的读写操作之比较

比较 Java 中对文件的读写操作之比较 作者:Jeru Liu日期:November 29,2000版本:1.0 Java 对文件进行读写操作的例子很多,让初学者感到十分困惑,我觉得有必要将各种方法进行一次分析,归类,理清不同方法之间的异同点. 一.在 JDK 1.0 中,通常是用 InputStream & OutputStream 这两个基类来进行读写操作的.InputStream 中的 FileInputStream 类似一个文件句柄,通过它来对文件进行操作,类似的,在 OutputSt

利用Activer server explorer可对文件进行读写访问

active|server|访问    漏洞描述: chinaasp的Activer server explorer可以很方便的对本地文件在线查看服务器上的目录 在线查看文件的名称.大小.类型.修改时间,在线编辑纯文本文件,如.txt..htm..asp..pl..cgi等等,直接执行服务器上的文件. Activer server explorer要求填写相对路径或者绝对路径,但是假如:有一个攻击者把Activer server explorer上传到目标服务器上的某个目录,并且这个目录支持AS

Java中对文件的读写操作之比较

比较 Java 中对文件的读写操作之比较 Java 对文件进行读写操作的例子很多,让初学者感到十分困惑,我觉得有必要将各种方法进行 一次分析,归类,理清不同方法之间的异同点. 一.在 JDK 1.0 中,通常是用 InputStream & OutputStream 这两个基类来进行读写操作的. InputStream 中的 FileInputStream 类似一个文件句柄,通过它来对文件进行操作,类似的,在 OutputStream 中我们有 FileOutputStream 这个对象. 用F

CorelDraw提示“试图越过其尾端对一未命名文件进行读写”

<CorelDraw疑难杂症速查手册>收集了作者木平与各位平面设计同仁相互探讨提出的问题以及百度CD吧的提问,结合实际操作和工作中遇到的问题整理而成.其中有些问题参考了吧中好友和网络上同道中人的回答,对于一些不清楚或有疑问的问题作者都亲自用CorelDraw 9和CorelDraw X3分别验证了操作性与真实性. 本教程为分期连载教程,欢迎大家持续关注. 问:CorelDraw提示"试图越过其尾端对一未命名文件进行读写"是怎么回事? 打开CorelDraw后,出现这样一句话

Android手机内存中文件的读写方法小结

  Android手机内存中文件的读写方法小结         这篇文章主要介绍了Android手机内存中文件的读写方法,实例总结了Android针对文件读写操作的相关技巧,非常具有实用价值,需要的朋友可以参考: 如何对手机内存中的文件数据进行读写呢? Context提供了领个方法来打开该应用程序的数据文件夹中的文件I/O流,具体如下: ? 1 FileInputStream openFileInput(String name) 打开应用程序的数据文件夹下的name文件对应的数据流 ? 1 Fi

介绍asp.net 操作INI文件的读写

 这篇文章主要介绍了asp.net 操作INI文件的读写,读写操作本地ini配置文件的方法,需要的朋友可以参考下  代码如下: using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebCon

c++-文件的读写,会将类对象的数据成员写入文件中。能将文件中的信息读入类对象的对应属性中。

问题描述 文件的读写,会将类对象的数据成员写入文件中.能将文件中的信息读入类对象的对应属性中. 情况一:无get,set,无<< >>重载函数的情况下如何将类对象的各个数据成员写入某个文件中(提示:可以在print函数中写代码). 情况二:当程序包含get,set函数而无<< >>重载函数时,如何将类对象的数据成员写入文件中. 情况三:当程序包含<< >>重载函数时,如何将类对象的数据成员写入文件中. 解决方案 大神在哪里,求,求大神

语言 指针-第一次写项目,不知道怎么实现。怎么实现数据文件的读写

问题描述 第一次写项目,不知道怎么实现.怎么实现数据文件的读写 软件三层架构 将用例图确定的函数 按 架构放在 不同的位置协同工作 界面切换 要点:所有界面是平等 实施:(1)所有 XXXXUI()的返回值 设置为 int (2)给 上述界面函数 编号通过界面编号进行 界面切换登录界面int LoginUI(){ XXXXXXXXXX if 成功 return 1; // 主界面else 失败 return 0; // 退出 } int main(){ int choice = 101; whi

《python 与数据挖掘 》一 2.5 文件的读写

本节书摘来自华章出版社<python 与数据挖掘 >一书中的第2章,第2.5节,作者张良均 杨海宏 何子健 杨 征,更多章节内容可以访问"华章计算机"公众号查看. 2.5 文件的读写 文件访问是一门语言重要的一环,适当地进行文本读写能够保存一次程序运行下来的结果.在数据挖掘的工作中,数据量很大,整个挖掘程序可以分为几部分,我们应该把每一部分运行的结果都保存下来,这样如果后面的程序出现错误,我们也不必再从头开始.而数据挖掘中最普遍的是对txt.csv等文件进行读写处理. 2.