std::basic_istream<CharT,Traits>:: getline
|
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):
- Eine End-of-File-Bedingung tritt in der Eingabesequenz auf.
-
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. - 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
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) |