当前位置: 首页 > news >正文

面向对象实验四(输入输出流)

一、实验目的
1、掌握用户自定义类型的输入输出。
2、掌握文件的输入、输出。

 

二、实验内容
1、定义一个复数类,并为其重载>>和<<运算符,使得复数对象可以整体输入输出,并给出main()对该类进行应用。

 1 #include<iostream>
 2 
 3 using namespace std;
 4 
 5 //复数类
 6 class complex
 7 {
 8 private:
 9     float real;
10     float imag;
11 public:
12     friend istream &operator>>(istream &in,class complex &temple);//重载输入运算符
13     friend ostream &operator<<(ostream &out,class complex &temple);//重载输出运算符
14 };
15 int main()
16 {
17     int i;
18     complex obj;
19     for(i=0;i<4;i++)
20     {
21         cout<<"请输入复数的实部和虚部:";
22         cin>>obj;
23         cout<<obj;
24     }
25     return 0;
26 }
27 
28 //重载输入运算符
29 istream &operator>>(istream &in,class complex &temple)
30 {
31     in>>temple.real;
32     in>>temple.imag;
33     return in;
34 }
35 
36 //重载输出运算符
37 ostream &operator<<(ostream &out,complex &temple)
38 {
39     out<<endl;
40     out<<temple.real;
41     if(temple.imag>0)
42     {
43         out<<'+';
44     }
45     out<<temple.imag<<'i'<<endl;
46     return out;
47 }

 

2、定义空间中的点类(有x,y,z坐标),并重载其>>和<<运算符。编写主函数完成从键盘上读入10个点的坐标,写入数据文件(point.data)中,从数据文件(point.data)中读入并显示在标准输出设备上。

 1 #include<iostream>
 2 #include<fstream>
 3 #define MAX 10
 4 
 5 using namespace std;
 6 
 7 //点类
 8 class point
 9 {
10 public:
11     float x;
12     float y;
13     float z;
14     friend istream& operator>>(istream& in,point &temple);//重载输入运算符
15     friend ostream& operator<<(istream& out,point &temple);//重载输出运算符
16 };
17 
18 int main()
19 {
20     int i;
21     point obj[MAX];
22     cout<<"请输入10个点的坐标:"<<endl;
23     for(i=0;i<MAX;i++)
24     {
25         cin>>obj[i];
26     }
27     ofstream out("point.data");//打开输出文件流
28     if(out)//如果打开成功
29     {
30         for(i=0;i<MAX;i++)//向文件输入信息
31         {
32             out<<obj[i].x<<' ' <<obj[i].y<<' '<<obj[i].z<<endl;
33         }
34         out.close();//关闭
35     }
36     cout<<endl<<"10个点的坐标分别为:"<<endl;
37     ifstream in("point.data");//打开输入文件流
38     if(in)//如果打开成功
39     {
40         for(i=0;i<MAX;i++)//从文件读取信息
41         {
42             in>>obj[i].x>>obj[i].y>>obj[i].z;
43             cout<<'('<<obj[i].x<<','<<obj[i].y<<','<<obj[i].z<<')'<<endl;//显示
44         }
45         in.close();//关闭
46     }
47     return 0;
48 }
49 
50 //重载输入运算符
51 istream& operator>>(istream& in,point &temple)
52 {
53     in>>temple.x>>temple.y>>temple.z;
54     return in;
55 }
56 
57 //重载输出运算符
58 ostream& operator<<(ostream& out,point &temple)
59 {
60     out<<temple.x<<temple.y<<temple.z;
61     return out;
62 }

 

转载于:https://www.cnblogs.com/xautlmx/p/3441394.html

相关文章:

  • 苹果屏幕分辨力和像素
  • db2还原离线备份文件报错SQL2071N 提示“访问共享库出现错误”解决
  • 动手实现Handler v1.3
  • pam_access.so
  • Http中header与body的区别
  • windows 下安装jdk
  • Hadoop HDFS Hive HBase关系图
  • 蕾丝 | 内外皆精致的女子
  • 数据恢复软件(三):浴室追凶(代码讲解版)
  • 2017.12.14
  • java的substring()方法在JDK 6和JDK 7中的运作机制
  • 【译】在Asp.Net中操作PDF - iTextSharp - 利用列进行排版
  • MYSQL—自动备份脚本(网友版)
  • 有关T-SQL的10个好习惯
  • 初识Postgresql和Sqoop
  • Apache Pulsar 2.1 重磅发布
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • js递归,无限分级树形折叠菜单
  • JS专题之继承
  • Linux CTF 逆向入门
  • redis学习笔记(三):列表、集合、有序集合
  • ucore操作系统实验笔记 - 重新理解中断
  • VUE es6技巧写法(持续更新中~~~)
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 构造函数(constructor)与原型链(prototype)关系
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 猴子数据域名防封接口降低小说被封的风险
  • 简析gRPC client 连接管理
  • 前端知识点整理(待续)
  • 区块链将重新定义世界
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 听说你叫Java(二)–Servlet请求
  • 微服务入门【系列视频课程】
  • 我与Jetbrains的这些年
  • 译米田引理
  • 在Unity中实现一个简单的消息管理器
  • 正则学习笔记
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #android不同版本废弃api,新api。
  • #define 用法
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)创业的注意事项
  • .NET : 在VS2008中计算代码度量值
  • .NET 5种线程安全集合
  • .NET 8.0 发布到 IIS
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET 材料检测系统崩溃分析
  • .Net的DataSet直接与SQL2005交互
  • .net实现客户区延伸至至非客户区