Table of Contents

getline

#include <string>
 
template< class charT, class Traits >
std::basic_istream< charT, Traits >& getline( std::basic_istream< charT, Traits >& in,
                                             std::basic_string< charT, Traits >& str );
 
template< class charT, class Traits >
std::basic_istream< charT, Traits >& getline( std::basic_istream< charT, Traits >& in,
                                             std::basic_string< charT, Traits >& str,
                                             charT delim);

Reads characters from in input stream until delimiting character ('\n' or delim) is found and saves them to the given string str. If delimiter is found, it is discarded.

Parameters

in - input stream to read from

str - string to store the read characters to

delim - delimiting character

Return value

in. Errors are signaled through in state flags.

Example

todo

The following code reads a line of text from stdin and displays it to stdout:

   string s;
   getline( cin, s );
   cout << "You entered " << s << endl;

After getting a line of data in a string, you may find that stringstreams are useful in extracting data from that string. For example, the following code reads numbers from standard input, ignoring any “commented” lines that begin with double slashes:

    // expects either space-delimited numbers or lines that start with
    // two forward slashes (//)
    string s;
    while( getline(cin,s) ) {
      if( s.size() >= 2 && s[0] == '/' && s[1] == '/' ) {
        cout << "  ignoring comment: " << s << endl;
      } else {
        istringstream ss(s);
        double d;
        while( ss >> d ) {
          cout << "  got a number: " << d << endl;
        }
      }
    }

When run with a user supplying input, the above code might produce this output:

    // test
      ignoring comment: // test
    23.3 -1 3.14159
      got a number: 23.3
      got a number: -1
      got a number: 3.14159
    // next batch
      ignoring comment: // next batch
    1 2 3 4 5
      got a number: 1
      got a number: 2
      got a number: 3
      got a number: 4
      got a number: 5
    50
      got a number: 50

See also

getline