实验八 输入输出流(一)

内容1:标准输入输出流重定向
(1) 新建一个工程demo1,设计一个类Time,成员变量为时(h)、分(m)、秒(s)。
(2) 分别为类Time重载提取运算符(>>)和插入运算符(>>)。
a. 输入格式:14 30 15 (三个整数,分别表示时、分、秒)
b. 输出格式:14.5042 (一个定点小数,要求保留4位小数)
(3) 运行程序,输入一个时间,输出该时间对应的小数,如下图所示
(4) 新建输入文件D:\in.txt,在文件中输入一个时间,如下图
打开命令提示符,进入到程序所在的路径,输入如下命令运行程序:
打开输出文件D:\out.txt,查看其内容,如下图:
注意:要求提示语句不能出现在输出文件中,只能出现在屏幕上。
附代码
!!!编译环境 DevC++ 5.11 TDM-GCC 4.9.2 64-Bit Release
头文件 iquery.h

#ifndef  _IQUERY_H
#define _IQUERY_H 1
	using namespace std;
	class Time{
		public:
			friend ostream &operator<<(ostream &,const Time&);  
    		friend istream &operator>>(istream &,Time&);  
//    		friend fstream &operator<<(fstream &,const Time&);  
//    		friend fstream &operator>>(fstream &,Time&); 
		private:
			double hour;
			double minute;
			double second;
			double xiaoshu; 	
	}; 
#endif

头文件实现文件 iquery,cpp

#include <iostream>
#include "string"
#include "iquery.h"
#include "iomanip"
#include "cmath" 
using namespace std; 

ostream &operator<<(ostream &output,const Time& time)  
{  
  
	if(time.hour>24||time.minute>60||time.second>60){
		clog<<"输入格式错误:"<<endl<<"请关闭程序并检查输入的时间" ;
	}
	else{
		output<<"输出该时间对应的小数:";
		output<<setw(6)<<time.hour+time.minute/60+time.second/3600;
	}
    return output;  
}  

//fstream &operator<<(fstream &output,const Time& time)  
//{  
//  
//	if(time.hour>24||time.minute>60||time.second>60){
//		clog<<"输入格式错误:"<<endl<<"请关闭程序并检查输入的时间" ;
//	}
//	else{
//		output<<"输出该时间对应的小数:";
//		output<<setw(6)<<time.hour+time.minute/60+time.second/3600;
//	}
//    return output;  
//}    
istream &operator>>(istream &input,Time& time)  
{  
    
//  input.ignore();//skip  
    input>>time.hour;  
     
   input.ignore();//skip  
    input>>time.minute;  
  
   input.ignore();//skip  
    input>>time.second;   
    return input;  
}  
//fstream &operator>>(fstream &input,Time& time)  
//{  
//    
  input.ignore();//skip  
//    input>>time.hour;  
//     
//   input.ignore();//skip  
//    input>>time.minute;  
//  
//   input.ignore();//skip  
//    input>>time.second;   
//    return input;  
//}  

源码 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) {
	Time time;
	ifstream infile;
	ofstream outfile;
	infile.open("in.txt",ios::in);
	if (!infile.is_open())
	clog<<"error in open in.txt in infile";
	infile>>time;
	outfile.open("out.txt", std::ios::out | std::ios::app);  
	if (!outfile.is_open())
	clog<<"error in open out.txt in outfile";
	outfile<<time;
	outfile.close();
	return 0;
}
注:
已经出现过的error:
存在的问题:
可行性优化:

欢迎访问陈风的个人博客

  • 31
    点赞
  • 94
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值