Demonstrate peek(), unget(), and ignore(). : ofstream « File Stream « C++ Tutorial






#include <iostream>
#include <fstream>
#include <cctype>

using namespace std;

int main()
{
  char ch;
  char idnum[5];

  idnum[4] = 0;

  ofstream fout("test.dat");

  if(!fout) {
    cout << "Cannot open test.dat for output.\n";
    return 1;
  }

  fout << "A #pending\n, B, #8875\n";

  fout.close();

  if(!fout.good()) {
    cout << "Error creating data file.";
    return 1;
  }
  ifstream fin("test.dat");

  if(!fin) {
    cout << "Cannot open test.dat for input.\n";
    return 1;
  }

  fin.exceptions(ios::badbit | ios::failbit);

  try {
    do {
      fin.ignore(40, '#');

      if(fin.eof()) {
        fin.clear(); // clear eofbit
        break;
      }
      ch = fin.peek();

      if(isdigit(ch)) {
        fin.read((char *)idnum, 4);

        cout << "ID #: " << idnum << endl;

      } else {
        cout << "ID not available: ";
        ch = fin.get();
        while(isalpha(ch)) {
          cout << ch;
          ch = fin.get();
        };

        fin.unget();
        cout << endl;
      }
    } while(fin.good());
  } catch(ios_base::failure exc) {
    cout << "Error reading data file.\n";
  }

  try {
    fin.close();
  } catch (ios_base::failure exc) {
    cout << "Error closing data file.";
    return 1;
  }

  return 0;
}








12.10.ofstream
12.10.1.Save char array to a file
12.10.2.Read char array from a file
12.10.3.Writing on a text file
12.10.4.Writing numbers to a file
12.10.5.ofstream: seek from beginning
12.10.6.Save and read double array in a binary file
12.10.7.Save and read structure
12.10.8.Save chars to a binary file
12.10.9.Demonstrate peek(), unget(), and ignore().
12.10.10.Create a sequential file.