topical media & game development

talk show tell print

professional-program-14-ErrorCheck-ErrorCheck.c

? / professional-program-14-ErrorCheck-ErrorCheck.c


  include <iostream> 
  include <fstream> 
  include <string>
  
  using namespace std; 
  
  int main() 
  { 
    cout << "Enter numbers on separate lines to add. Use Control-D to finish (Control-Z in Windows)." << endl;
    int sum = 0; 
  
    if (!cin.good()) { 
      cout << "Standard input is in a bad state!" << endl; 
      exit(1); 
    } 
  
    int number;
    while (true) { 
      cin >> number;
      if (cin.good()) {
        sum += number; 
      } else if (cin.eof()) {
        break; // reached Reached end of file
      } else {
        // errorError!
        cin.clear(); // clear Clear the error state.
        string badToken;
        cin >> badToken; // consume Consume the bad input.
        cerr << "WARNING: Bad input encountered: " << badToken << endl;
      }
    } 
  
    cout << "The sum is " << sum << endl; 
  
    return 0; 
  }
  


(C) Æliens 20/2/2008

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.