topical media & game development

talk show tell print

professional-program-15-ReadIntegerFile-TerminateHandler.c

? / professional-program-15-ReadIntegerFile-TerminateHandler.c


  include <fstream>
  include <iostream>
  include <vector>
  include <string>
  include <stdexcept>
  include <exception>
  
  using namespace std;
  
  void readIntegerFile(const string& fileName, vector<int>& dest)
  {
    ifstream istr;
    int temp;
  
    istr.open(fileName.c_str());
    if (istr.fail()) {
      // We failed to open the file: throw an exception
      throw invalid_argument("");
    }
  
    // Read the integers one-by-one and add them to the vector
    while (istr >> temp) {
      dest.push_back(temp);
    }
  
    if (istr.eof()) {
      // We reached the end-of-file.
      istr.close();
    } else {
      // Some other error. Throw an exception
      istr.close();
      throw runtime_error("");
    }
  }
  
  void myTerminate()
  {
    cout << "Uncaught exception!\n";
    exit(1);
  }
  
  int main(int argc, char** argv)
  {
    vector<int> myInts;
    const string fileName = "IntegerFile.txt";
  
    set_terminate(myTerminate);
  
    readIntegerFile(fileName, myInts);
  
    for (size_t i = 0; i < myInts.size(); i++) {
      cerr << myInts[i] << " ";
    }
    cout << 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.