I/O Status : File Status « File « C++






I/O Status

  
/*
Name                 Meaning

ios::goodbit         No error bits set

ios::eofbit          1 when end-of-file is encountered; 0 otherwise

ios::failbit         1 when a (possibly) nonfatal I/O error has occurred; 0 otherwise

ios::badbit          1 when a fatal I/O error has occurred; 0 otherwise
*/

#include <iostream>
#include <fstream>
using namespace std;
   
void checkstatus(ifstream &in);
   
int main(int argc, char *argv[])
{
  if(argc!=2) {
    cout << "Usage: Display <filename>\n";
    return 1;
  }
   
  ifstream in(argv[1]);
   
  if(!in) {
    cout << "Cannot open input file.\n";
    return 1;
  }
   
  char c;
  while(in.get(c)) {
    if(in) cout << c;
    checkstatus(in);
  }
   
  checkstatus(in);  // check final status
  in.close();
  return 0;
}
   
void checkstatus(ifstream &in)
{
  ios::iostate i;
   
  i = in.rdstate();
   
  if(i & ios::eofbit)
    cout << "EOF encountered\n";
  else if(i & ios::failbit)
    cout << "Non-Fatal I/O error\n";
  else if(i & ios::badbit)
    cout << "Fatal I/O error\n";
}
  
    
  








Related examples in the same category

1.Check file status
2.End of file sign
3.The string pointed to by mode determines how the file will be opened. The following table shows the legal values for mode. (Strings like ?+b?may also be represented as ?b+.?