我是靠谱客的博主 坚强御姐,最近开发中收集的这篇文章主要介绍实验八 输入输出流(二),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

内容2:文本文件的读、写
(1) 新建一个工程demo2,设计一个类Student,其成员变量包括学号(no)、姓名(name)、性别(sex)、专业(major)、联系方式(phone)和地址(addr)。
(2) 为类Student定义成员函数writeTo,实现从给定文本文件中读取学生数据,接口如下:
void writeTo (char filename[ ]);
(3) 为类Student定义成员函数readFrom,实现将学生数据保存到给定文本文件,接口如下:
void readFrom (char filename[ ]);
(4) 主函数的流程为:
a) 定义Student类型的对象stu1和stu2;
b) 输入学生数据,赋值给stu1;
c) 调用writeTo 方法,按照文本格式将stu1的数据保存到stu.txt文件;
d) 调用readFrom 方法,从stu.txt文件中读取学生数据装载到stu2中;
e) 输出stu2的数据。
(5) 程序运行结果如下
内容3:二进制文件的读、写
将实验2中的“文本文件”改为“二进制文件”,其余不变。
此时,程序运行完后,stu.txt文件的内容如下图所示。
示;程序运行完后,stu.txt文件的内容如下右图所示。
附代码
!!!编译环境 DevC++ 5.11 TDM-GCC 4.9.2 64-Bit Release
头文件 iquery.h

#ifndef
_IQUERY_H
#define _IQUERY_H 1
using namespace std;
#define MAXN 20
class Student{
public:
void input();
friend ostream &operator<<(ostream &,Student &);//重载流运算符<<
friend istream &operator>>(istream &,Student &);//重载流运算符>>
void writeTo ();//实现从给定文本文件中读取学生数据
void readFrom ();//将学生数据保存到给定文本文件
private:
string num;
string name;
string sex;
string phone;
string major;
string addr;
};
#endif

头文件实现文件 iquery,cpp

#include <iostream>
#include "string"
#include "iquery.h"
#include "iomanip"
#include "cmath"
#include "fstream"
using namespace std;
void Student::input(){
cout<<"请输入学生姓名:"<<endl;
cin>>this->name;
cout<<"请输入学生性别:"<<endl;
cin>>this->sex;
cout<<"请输入学生学号:"<<endl;
cin>>this->num;
cout<<"请输入学生专业:"<<endl;
cin>>this->major;
cout<<"请输入学生联系方式:"<<endl;
cin>>this->phone;
cout<<"请输入学生住址:"<<endl;
cin>>this->addr;
}
ostream& operator<<(ostream &os,Student &stu){
os<<"学生信息如下:"<<endl;
os<<"姓名:"<<stu.name<<endl;
os<<"性别:"<<stu.sex<<endl;
os<<"专业:"<<stu.num<<endl;
os<<"联系方式:"<<stu.phone<<endl;
os<<"住址:"<<stu.addr<<endl;
return os;
}
istream &operator>>(istream &is,Student &stu){
cout<<"请输入学生姓名:"<<endl;
is>>stu.name;
cout<<"请输入学生性别:"<<endl;
is>>stu.sex;
cout<<"请输入学生学号:"<<endl;
is>>stu.num;
cout<<"请输入学生专业:"<<endl;
is>>stu.major;
cout<<"请输入学生联系方式:"<<endl;
is>>stu.phone;
cout<<"请输入学生住址:"<<endl;
is>>stu.addr;
return is;
}
void Student::writeTo (char filename[]){//将学生数据保存到给定文本文件
ofstream outfile;
outfile.open(filename);
if (!outfile.is_open())
clog<<"error in open student.txt in outfile";
else{
outfile<<this->name<<" "<<this->num<<" "<<this->sex<<" "<<this->phone<<" "<<this->major<<" "<<this->addr;
outfile.close();
}
}
void Student::readFrom (char filename[]){//实现从给定文本文件中读取学生数据
ifstream infile;
infile.open(filename);
if (!infile.is_open())
clog<<"error in open student.txt in infile";
else{
infile>>this->name;infile.ignore();
infile>>this->num;infile.ignore();
infile>>this->sex;infile.ignore();
infile>>this->phone;infile.ignore();
infile>>this->major;infile.ignore();
infile>>this->addr;infile.ignore();
}
}

源码 main.cpp

#include <iostream>
#include "string"
#include "iquery.h"
#include "iomanip"
#include "cmath"
#include "fstream"
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char** argv) {
Student stu1,stu2;
char filename[MAXN] ;
cin>>stu1;
cout<<"请输入定向输出文件地址"<<endl;
cin>>filename;
stu1.writeTo(filename);
stu2.readFrom(filename);
cout<<stu2;
return 0;
}

二进制输出不再赘述
注:
已经出现过的error:
存在的问题:
可行性优化:
欢迎访问陈风的个人博客

最后

以上就是坚强御姐为你收集整理的实验八 输入输出流(二)的全部内容,希望文章能够帮你解决实验八 输入输出流(二)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部