int main(int argc, char** argv) { string input; string parameter; double result; queue<string> seperatedExpression; Scan scan; Calculation cal; Print print; parameter = argv[1]; cout << setprecision(precision); if (parameter == "-a") //输入参数为 -a 的情况,输出表达式 { input = argv[2]; seperatedExpression = scan.ToStringQueue(input); if (seperatedExpression.front() == "ERROR") //若返回字符串为 ERROR 则报错并退出循环 { print.PrintLengthError(); return 0; } result = cal.Calculate(seperatedExpression); print.PrintA(input,result); } else if (parameter == "-f") //输入参数为 -f 的情况,对文件进行读写 { if (scan.Open(argv[2]) && print.Open(argv[3])) { while (!scan.IsEOF()) //循环读入每行,计算和写入文件 { result = 0; while(!seperatedExpression.empty()) { seperatedExpression.pop(); } scan.Read(); if (scan.GetInput() == "") { continue; } seperatedExpression = scan.ToStringQueue(scan.GetInput()); if (seperatedExpression.front() == "ERROR") { print.PrintLengthError(); continue; } result = cal.Calculate(seperatedExpression); print.PrintF(result); } scan.Close(); print.Close(); } else { cout << "Open file failed."; return 0; } } else //无参数情况 { input = argv[1]; seperatedExpression = scan.ToStringQueue(input); if (seperatedExpression.front() == "ERROR") { print.PrintLengthError(); return 0; } result = cal.Calculate(seperatedExpression); print.DefaultPrint(result); } return 0; }