Namespaces
Variants

std::basic_istream<CharT,Traits>:: getline

From cppreference.net
basic_istream & getline ( char_type * s, std:: streamsize count ) ;
(1)
basic_istream & getline ( char_type * s, std:: streamsize count, char_type delim ) ;
(2)

Extrahiert Zeichen aus dem Stream bis zum Zeilenende oder dem angegebenen Trennzeichen delim .

Die erste Überladung entspricht getline ( s, count, widen ( ' \n ' ) ) .

Verhält sich wie eine UnformattedInputFunction . Nach dem Konstruieren und Überprüfen des Sentry-Objekts extrahiert Zeichen aus * this und speichert sie an aufeinanderfolgenden Positionen des Arrays, dessen erstes Element durch s gezeigt wird, bis eines der folgenden Ereignisse eintritt (in der gezeigten Reihenfolge geprüft):

  1. Eine End-of-File-Bedingung tritt in der Eingabesequenz auf.
  2. Das nächste verfügbare Zeichen c ist das Trennzeichen, wie bestimmt durch Traits :: eq ( c, delim ) . Das Trennzeichen wird extrahiert (im Gegensatz zu basic_istream::get() ) und für gcount() gezählt, wird jedoch nicht gespeichert.
  3. count ist nicht positiv, oder count - 1 Zeichen wurden extrahiert ( setstate ( failbit ) wird in diesem Fall aufgerufen).

Wenn die Funktion keine Zeichen extrahiert, wird ​ failbit im lokalen Fehlerzustand gesetzt, bevor setstate() aufgerufen wird.

In jedem Fall, wenn count > 0 , speichert es dann ein Nullzeichen CharT ( ) an der nächsten aufeinanderfolgenden Position des Arrays und aktualisiert gcount() .

Inhaltsverzeichnis

Hinweise

Da Bedingung #2 vor Bedingung #3 geprüft wird, löst die Eingabezeile, die exakt in den Puffer passt, nicht das failbit aus.

Da das Abschlusszeichen als extrahiertes Zeichen gezählt wird, löst eine leere Eingabezeile nicht failbit aus.

Parameter

s - Zeiger auf die Zeichenkette zum Speichern der Zeichen
count - Größe der Zeichenkette, auf die gezeigt wird durch s
delim - Begrenzungszeichen zum Stoppen der Extraktion. Wird extrahiert aber nicht gespeichert.

Rückgabewert

* this

Exceptions

failure if an error occurred (the error state flag is not goodbit ) and exceptions() is set to throw for that state.

Wenn eine interne Operation eine Ausnahme auslöst, wird diese abgefangen und badbit wird gesetzt. Wenn exceptions() für badbit gesetzt ist, wird die Ausnahme erneut ausgelöst.

Beispiel

#include <array>
#include <iostream>
#include <sstream>
#include <vector>
int main()
{
    std::istringstream input("abc|def|gh");
    std::vector<std::array<char, 4>> v;
    // Hinweis: Die folgende Schleife terminiert, wenn std::ios_base::operator bool()
    // auf dem von getline() zurückgegebenen Stream false zurückgibt
    for (std::array<char, 4> a; input.getline(&a[0], 4, '|');)
        v.push_back(a);
    for (auto& a : v)
        std::cout << &a[0] << '\n';
}

Ausgabe:

abc
def
gh

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
LWG 531 C++98 std::getline konnte den Fall nicht behandeln,
in dem count nicht-positiv ist
in diesem Fall wird kein Zeichen
extrahiert

Siehe auch

Daten aus einem I/O-Stream in einen String lesen
(Funktions-Template)
extrahiert formatierte Daten
(öffentliche Elementfunktion)
extrahiert Zeichen
(öffentliche Elementfunktion)
extrahiert Zeichenblöcke
(öffentliche Elementfunktion)