Mail Archives: djgpp/1998/04/28/01:27:51
Hi,
Would someone be kind enough to explain how to reposition a file file
pointer in C++ when using ifstream? I'm trying to write a class to
deal with .ini type files as below (very incomlete!!):
#include <fstream.h>
#include <stdlib.h>
const int LINE_SIZE = 100;
class fio
{
 public:
    fio(char* filename);
      int getNumSec()                                   {return
      secCount;}
      void findSec(char*); 
      void findVar(char*, char*);
   private:
    ifstream infile;
      int secCount;
};
fio::fio(char *filename)
{
 infile.open(filename);
      if(!infile)
   {
    cerr << "Could not open " << filename << ", aborting... ";
      exit(1);
   }
   secCount = 0;
   char buffer[LINE_SIZE];
 while(infile)
   {
    infile.getline(buffer, LINE_SIZE);
      if(buffer[0] == '[')
       secCount++;
   }
}
void fio::findSec(char* secName)
{
 char buffer[LINE_SIZE];
   bool found = false;
   while(infile && found == false)    // <-- Problem here - file
   pointer {
    infile.getline(buffer, LINE_SIZE);
      int size_left = strlen(secName) - 2;
      if(buffer[0] == '[')
      {
       int count;
         for(count = 0; count < size_left; count++)
         {
          if(!(buffer[count] == secName[count]))
             found = false;
            else
             found = true;
         }
      }
   }
   if(found == true)
    cout << endl << "found \"" << secName << " \"";
   else
      cout << endl << "\"" << secName << "\" not found or bad code"; }
void fio::findVar(char* secName, char* varName)
{
   fio::findSec(secName);
   char buffer[LINE_SIZE];
   while(infile)
   {
    infile.getline(buffer, LINE_SIZE);
      if(buffer[0] == '[')
      {
       cout << "Variable " << varName << " not found in this section "
              <<  "aborting ";
         exit(1);
      }
   }
}
void main()
{
 fio test("fiotest.ini");
 cout << "Number of sections: " << test.getNumSec();
   test.findSec("test section");
//   test.findVar("test section", "test1");
}
Many many thanks in advance!
Glen L. Bowes
- Raw text -