首页 > 技术文章 > 程序设计第五次作业——计算器(调用文件输入输出)

fzuljz 2016-05-11 00:27 原文

程序设计第五次作业——计算器(调用文件输入输出)

Github 链接:传送门

本次作业要求

参考资料1

参考资料2

文件的输入输出

<1>实例化ifstream和ofstream,并将输入文件名读入

if(strcmp(argv[1],"-f") == 0)
{
    string test_file=argv[2];    //输入文件名 
    string result_file=argv[3];  //输出文件名
}

<2>调用 string::c_str() 成员函数
<3>使用getline(iosin,get_input,'\n'),将test.txt文件中的四则运算表达式传入,其中“\n”为每一个表达式的结束标志
<4>之后调用之前写好的表达式的处理函数
<5>将算出来的值输出在results.txt上

主要的代码

void Print::FileOutput(string test_file , string result_file)
{
	ifstream iosin;     //读操作(输入)的文件类 
	ofstream iosout;    //写操作(输出)的文件类 
		    
	//打开文件 
    iosin.open(test_file.c_str(),ios::in);  
	iosout.open(result_file.c_str(),ios::out);
			 
	/*我们必须调用 string::c_str() 成员函数,
	因为 fstream 对象只接受常量字符串作为文件名。
      当你将文件名作为参数传递时,构造函数试图打开指定的文件。
	接着,我们用重载的 !操作符来检查文件的状态。*/	
			
	while(!iosin.eof())
	{
		string get_input = "";
		Dispose *p = new Dispose();
		Calculation *cal = new Calculation();
				
		getline(iosin,get_input,'\n'); //以换行符作为分界点。
				
		double results;
		results = cal->CaculateExpression(p->ToStringQueue(get_input));
				 
		iosout << results << endl;   //将计算出来的值记录到文件中去
		
	    delete p;   
		p=NULL;
		delete cal;
		cal=NULL;
		
	}
	
	//关闭文件 
	iosin.close();
	iosout.close();
}

运行结果

cmd运行结果:

在txt文件运行结果

计算流程框图:

推荐阅读