John Kemp
John Kemp

Reputation: 159

Parse a file in c++ and ignore some characters

I'm trying to parse a file that has the following information

test_wall ; Comments!!
je,5
forward
goto,1
test_random;
je,9

I'm supposed to ignore comments after the ";" and move on to the next line. When there is a comma I'm trying to ignore the comma and store the second value.

string c;
int a;

c=getChar();

ifstream myfile (filename);
if (myfile.is_open())
{
   while ( c != ';' && c != EOF)
   {
       c = getchar();
       if( c == ',')
       {
         a= getChar();
       }

   }
}
myfile.close();
}

Upvotes: 0

Views: 4347

Answers (1)

john
john

Reputation: 87944

Here's some code. I'm not entirely sure I've understood the problem correctly, but if not hopefully this will set you on the right direction.

ifstream myfile (filename);
if (myfile.is_open())
{
   // read one line at a time until EOF
   string line;
   while (getline(myFile, line))
   {
       // does the line have a semi-colon?
       size_t pos = line.find(';');
       if (pos != string::npos)
       {
           // remove the semi-colon and everything afterwards
           line = line.substr(0, pos);
       }
       // does the line have a comma?
       pos = line.find(',');
       if (pos != string::npos)
       {
           // get everything after the comma
           line = line.substr(pos + 1);
           // store the string
           ...
       }
   }
}

I've left the section commented 'store the string' blank because I'm not certain what you want to do here. Possibly you are asking to convert the string into an integer before storing it. If so then add that code, or ask if you don't know how to do that. Actually don't ask, search on stack overflow, because that question has been asked hundreds of times.

Upvotes: 1

Related Questions