std::ws
| Definiert in Header <istream> |
||
| template< class CharT, class Traits > std::basic_istream<CharT, Traits>& ws( std::basic_istream<CharT, Traits>& is ); |
||
Verwirft führende Leerzeichen aus einem Eingabestrom.
Verhält sich wie eine UnformattedInputFunction, außer dass is.gcount() nicht modifiziert wird. Nach dem Erstellen und Überprüfen des Sentry-Objekts werden Zeichen aus dem Strom extrahiert und verworfen, bis eine der folgenden Bedingungen eintritt:
- Das Dateiende wird in der Eingabesequenz erreicht (in diesem Fall ruft die Funktion setstate(eofbit) auf, setzt aber nicht
failbit; dies gilt nicht, wenn daseofbitbereits auf is vor dem Aufruf vonwsgesetzt ist, in welchem Fall das Erstellen des Sentry-Objektsfailbitsetzen würde).
- Das nächste verfügbare Zeichen c in der Eingabesequenz ist kein Leerzeichen, wie durch std::isspace(c, is.getloc()) bestimmt wird. Das Nicht-Leerzeichen wird nicht extrahiert.
Dies ist ein reiner Eingabe-I/O-Manipulator, er kann mit einem Ausdruck wie in >> std::ws für jedes in vom Typ std::basic_istream aufgerufen werden.
Inhalt |
[bearbeiten] Parameter
| ist | - | Referenz auf den Eingabestrom |
[bearbeiten] Rückgabewert
is (Referenz auf den Strom nach der Extraktion aufeinanderfolgender Leerzeichen).
[bearbeiten] Hinweise
Wenn eofbit vor dem Aufruf auf dem Strom gesetzt ist, wird das Erstellen des Sentry-Objekts failbit setzen.
[bearbeiten] Beispiel
#include <iomanip> #include <iostream> #include <istream> #include <sstream> #include <string> int main() { for (const char* str : {" #1 test", "\t #2 test", "#3 test"}) { std::string line; std::getline(std::istringstream{str}, line); std::cout << "getline returns:\t" << std::quoted(line) << '\n'; std::istringstream iss{str}; std::getline(iss >> std::ws, line); std::cout << "ws + getline returns:\t" << std::quoted(line) << '\n'; } }
Ausgabe
getline returns: " #1 test" ws + getline returns: "#1 test" getline returns: " #2 test" ws + getline returns: "#2 test" getline returns: "#3 test" ws + getline returns: "#3 test"
[bearbeiten] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 415 | C++98 | Der Aufruf von std::ws konstruiert möglicherweise nicht das Sentry-Objekt(inkonsistent mit anderen Eingabefunktionen) |
erfordert die Konstruktion des Sentry-Objekts |
[bearbeiten] Siehe auch
| extrahiert und verwirft Zeichen, bis das gegebene Zeichen gefunden wird (public member function of std::basic_istream<CharT,Traits>) |