Namespaces
Variants

std:: ws

From cppreference.net
< cpp ‎ | io ‎ | manip
Definiert in Header <istream>
template < class CharT, class Traits >
std:: basic_istream < CharT, Traits > & ws ( std:: basic_istream < CharT, Traits > & is ) ;

Entfernt führende Leerzeichen aus einem Eingabestrom.

Verhält sich wie eine UnformattedInputFunction , mit der Ausnahme, dass is. gcount ( ) nicht modifiziert wird. Nach dem Konstruieren und Prüfen des Sentry-Objekts extrahiert es Zeichen aus dem Stream und verwirft sie, bis eine der folgenden Bedingungen eintritt:

  • Eine Dateiende-Bedingung tritt in der Eingabesequenz auf (in diesem Fall ruft die Funktion setstate ( eofbit ) auf, setzt jedoch nicht failbit ; dies gilt nicht, wenn das eofbit bereits vor dem Aufruf von ws auf is gesetzt war, in welchem Fall die Konstruktion des Sentry-Objekts failbit setzen würde).
  • das nächste verfügbare Zeichen c in der Eingabesequenz ist kein Leerzeichen, wie bestimmt durch std:: isspace ( c, is. getloc ( ) ) . Das Nicht-Leerzeichen-Zeichen wird nicht extrahiert.

Dies ist ein Nur-Eingabe-I/O-Manipulator, er kann mit einem Ausdruck wie in >> std :: ws für jedes in vom Typ std::basic_istream aufgerufen werden.

Inhaltsverzeichnis

Parameter

ist - Referenz auf Eingabestream

Rückgabewert

is (Referenz auf den Stream nach der Extraktion aufeinanderfolgender Leerzeichen).

Hinweise

Wenn eofbit vor dem Aufruf im Stream gesetzt ist, wird die Konstruktion des Sentry-Objekts failbit setzen.

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"

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 415 C++98 Aufruf von std::ws könnte das Sentry-Objekt nicht konstruieren
(inkonsistent mit anderen Eingabefunktionen)
muss das Sentry-Objekt
konstruieren

Siehe auch

extrahiert und verwirft Zeichen, bis das angegebene Zeichen gefunden wird
(öffentliche Elementfunktion von std::basic_istream<CharT,Traits> )