Page 1 of 1

How to check for blank line?

Posted: Fri Jul 06, 2007 4:23 am
by jongooni
I'm having trouble figuring out how to read in numbers until I hit a blank line. This is what I have so far, and I've looked into getline and cin and others.

bool keep_going = true;
string z;
int a;
while(keep_going){ //stay in while loop until blank line
getline(cin, z); //read in line
a = z.size() - 1; //get
if( z[a] == '\n'){ //check for blank line
keep_going = false;
}//end if
}//end while


I'm new to c++ so any help is nice

Posted: Fri Jul 06, 2007 10:31 am
by jan_holmes
This might help :

Code: Select all

int main () {
    string s;
    while (getline(cin,s)) {
          if (s.length() == 0) break;
          int n = atoi(s.c_str());
          printf("%d\n",n);
    }
    return 0;
}

Posted: Fri Jul 06, 2007 4:31 pm
by jongooni
Actually for some reason that doesn't sem to work when I do something like

1
//doesn't see this blank line
2
//doesn't see this blank line
4

Posted: Fri Jul 06, 2007 6:23 pm
by chunyi81
I think what you need is something like this:

Code: Select all

int main()
{
    string str;
    while (getline(cin,str))
    {
         if (str.length() > 0)
         {
             // process input
         }
    }
    return 0;
}
This will read until end of file and skips blank lines as well. Hope this helps.

Posted: Fri Jul 06, 2007 6:39 pm
by jongooni
THanks, but I don't want to skip blank lines. I want to stop on blank lines and then process what I just read in.

Posted: Fri Jul 06, 2007 11:39 pm
by Krzysztof Duleba
Do you need it all spell out? You already have tools necessary to accomplish that goal (I'll just add that string::size() method is nicer than string::length()). If you don't, my advice is that you get a good book and read it, your questions indicate lack of basic understanding of programming in general and C++ in particular. (If I'm wrong about that, you should start applying those skills, otherwise you won't progress).