Source of simple_calc.cpp


  1: //simple_calc.cpp

  3: #include <iostream>
  4: #include <string>
  5: #include <sstream>
  6: using namespace std;

  8: int main(int argc, char* argv[])
  9: {
 10:     if (argc == 1)
 11:     {
 12:         cout << "\nThis program is a very simple calculator which can "
 13:             "add, subtract, multiply, or\ndivide two integers. The "
 14:             "expression to be evaluated, including both operands\nand "
 15:             "the operator, is read from the command line and put into "
 16:             "an input string\nstream object, from which the individual "
 17:             "parts of the expression are then read\nas tokens in an "
 18:             "input stream in the same way they would be read from any "
 19:             "other\ntext input stream, such as cin."
 20:             
 21:             "\n\nSample usage:"
 22:             "\nsimple_calc 1 + 2"
 23:             "\n1 + 2 = 3";
 24:         cout << "\nPress Enter to continue ... ";  cin.ignore(80, '\n');
 25:         return 0;
 26:     }

 28:     //Create a string containing the command-line expression
 29:     string expression;
 30:     for (int i=1; i<argc; i++) expression += argv[i];

 32:     //Create an "input string stream" from that string
 33:     istringstream iss(expression);

 35:     //Read the arithmetic expression from the "input string stream" in
 36:     //the same way it would be read from the keyboard or a textfile:
 37:     int firstOperand, secondOperand;
 38:     char op;
 39:     iss >> firstOperand >> op >> secondOperand;

 41:     //Evaluate the expression, then display the expression and
 42:     //its value:
 43:     int result;
 44:     switch (op)
 45:     {
 46:         case '+': result = firstOperand + secondOperand; break;
 47:         case '-': result = firstOperand - secondOperand; break;
 48:         case '*': result = firstOperand * secondOperand; break;
 49:         case '/': result = firstOperand / secondOperand; break;
 50:     }
 51:     cout << firstOperand << " " << op << " " << secondOperand
 52:         << " = " << result << endl;
 53: }