getline

Aus cppreference.com
Wechseln zu: Navigation, Suche


Syntax:

   #include <string>
   istream& std::getline( istream& is, string& s );
   istream& std::getline( istream& is, string& s, charT delimiter );

Der C++ string header definiert die globale Funktion getline(), die Strings von einem I/O stream einliest. Die getline() Funktion, welche nicht Teil der String-Klasse ist, liest eine Zeile vom is und speichert sie in s. Wenn ein character delimiter spezifiziert wird, dann wird getline() dem delimiter verwenden, um zu Entscheiden, wo das Einlesen der Daten beendet wird. Andernfalls wird die zweite Variante wie folgt verwendet:

return getline( is, s, is.widen( '\n' ) );

ACHTUNG: istream ist der istream type basic_istream<charT> analog zum Buchstabentyp.

Der folgende Code liest zum Beispiel eine Textzeile aus stdin ein und übergibt sie zu stdout:

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

Nachdem eine Datenzeile in einen string gegeben wurde, könnte man annehmen, dass stringstreams nüztlich bei der Datenextraktion aus dem string sein würden. So liest der folgende Code Zahlen aus dem standart input und ignoriert die kommentierten Zeilen die mit doppelten slashes anfangen:

    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

Because the getline() function begins reading at the current file position, it can also be used to read the remainder of a line, or any characters up to the specified delimiter.

Related Topics: get, getline, stringstream

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Werkzeuge
In anderen Sprachen