程序设计第五次作业——计算器(调用文件输入输出)
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,'
'),将test.txt文件中的四则运算表达式传入,其中“
”为每一个表达式的结束标志
<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,'
'); //以换行符作为分界点。
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文件运行结果