Detecting EOF : file pointer « File Stream « C++ Tutorial






#include <iostream>
#include <fstream>
#include <cctype>
#include <iomanip>
using namespace std;
   
int main(int argc, char *argv[])
{
  if(argc!=2) {
    cout << "Usage: Display <filename>\n";
    return 1;
  }
   
  ifstream in(argv[1], ios::in | ios::binary);
   
  if(!in) {
    cout << "Cannot open input file.\n";
    return 1;
  }
   
  register int i, j;
  int count = 0;
  char c[16];
   
  cout.setf(ios::uppercase);
  while(!in.eof()) {
    for(i=0; i<16 && !in.eof(); i++) {
      in.get(c[i]);
    }
    if(i<16) i--; // get rid of eof
   
    for(j=0; j<i; j++)
      cout << setw(3) << hex << (int) c[j];
    for(; j<16; j++) cout << "  ";
   
    cout << "\t";
    for(j=0; j<i; j++)
      if(isprint(c[j])) cout << c[j];
      else cout << ".";
   
    cout << endl;
   
    count++;
    if(count==16) {
      count = 0;
      cout << "Press ENTER to continue: ";
      cin.get();
      cout << endl;
    }
  }
   
  in.close();
   
  return 0;
}








12.6.file pointer
12.6.1.change file at given position
12.6.2.get file content at given position
12.6.3.Change a file at specific position
12.6.4.Check ofstream current marker position
12.6.5.move to position 2 in the stream and output a 0 in position 2
12.6.6.Tell the current position
12.6.7.seek and Skip
12.6.8.Test File Position
12.6.9.Seek 0 to reset the file pointer
12.6.10.seekg( ) moves the pointer offset number of characters from the specified origin
12.6.11.uses both seekp( ) and seekg( ) to reverse the first characters in a file.
12.6.12.Detecting EOF