0

Hi there,

Say I have the following while loop, that loops on the condition that a lne (a string) is received from a file:

while ( getline( inData2, line ) )                  // Increment rows till none left
    {
            if ( !line )
            {
                cout << "No data entered. Please enter data. Program terminated." << endl;
                exit(0);
            }
      ....
    }

1) How do I check whether there is no line (string) received? Writing !line doesn't seem to work.
2) Is using exit(0) the best way to termine the program of no lne is entered?

3
Contributors
3
Replies
4
Views
8 Years
Discussion Span
Last Post by William Hemsworth
0
int linecnt;

for (linecnt=0; getline(inData2,line); linecnt++) {

}
if (linecnt == 0) {
   // no lines report...
   return; // return value - return false, for example
}

Now if (!line) is a wrong and senseless construct. No operator!() for std::string. You have a line (may be empty) in the loop body (see your own loop condition ;))...

It's not the best method to exit() from C++ functions: local variables destructors are not called in that case. Better avoid C++ program termination with exit().

0

Thanks for your help, ArkM!

Just a question though... I don't want to terminate only the function (so I don't want to use return), but rather the whole program from within the function. How could I do that without exit()?

0

>Just a question though... I don't want to terminate only the function (so I don't want to use return),
>but rather the whole program from within the function. How could I do that without exit()?
Check for errors in the main function, and if one has occurred, close it from there.

bool my_function() {
  /* Code Here */
  
  if ( /* Some Error */ ) {
    return 1;
  }

  return 0;
}

int main() {
  if ( my_function() == 1 ) {
    return 0;
  }

  /* Other Code Here Never Executed */

  return 0;
}
This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.