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

本文介绍了一个简单的计算器程序设计案例,该程序能够从文件中读取四则运算表达式,并计算其结果,最后将结果输出到另一个文件中。文章详细展示了如何使用C++进行文件的输入输出操作,以及如何通过调用特定函数实现表达式的解析与计算。

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

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运行结果:
885799-20160510220451140-795180136.png

在txt文件运行结果
885799-20160510220532812-1546256316.png

885799-20160510220541530-372267013.png

计算流程框图:

885799-20160511002715780-822258259.png

转载于:https://www.cnblogs.com/fzuljz/p/5479979.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值