Namensräume
Varianten
Aktionen

std::ws

Von cppreference.com
< cpp‎ | io‎ | manip
 
 
 
Input/output-Manipulatoren
Formatierung von Gleitkommazahlen
Ganzzahlformatierung
Boolean-Formatierung
Feldbreiten- und Füllzeichensteuerung
Andere Formatierungen
Leerzeichenverarbeitung
ws
Ausgabe-Flushen
(C++20)  

Statusflags-Manipulation
Zeit- und Geld-I/O
(C++11)
(C++11)
(C++11)
(C++11)
Gequoteter Manipulator
(C++14)
 
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 das eofbit bereits auf is vor dem Aufruf von ws gesetzt ist, in welchem Fall das Erstellen des Sentry-Objekts failbit setzen 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>) [edit]