operator<<,>> (std::basic_string)
|
Definiert in Header
<string>
|
||
|
template
<
class
CharT,
class
Traits,
class
Allocator
>
std::
basic_ostream
<
CharT, Traits
>
&
|
(1) | |
|
template
<
class
CharT,
class
Traits,
class
Allocator
>
std::
basic_istream
<
CharT, Traits
>
&
|
(2) | |
Anschließend fügt es jedes Zeichen aus der resultierenden Sequenz seq (dem Inhalt von str plus Füllzeichen) in den Ausgabestream os ein, als ob os. rdbuf ( ) - > sputn ( seq, n ) aufgerufen würde, wobei n gleich std:: max ( os. width ( ) , str. size ( ) ) ist. Schließlich ruft es os. width ( 0 ) auf, um die Effekte von std::setw falls vorhanden aufzuheben.
|
Äquivalent zu return os << std:: basic_string_view < CharT, Traits > ( str ) ; . |
(seit C++17) |
-
NZeichen wurden gelesen, wobeiNgleich is. width ( ) ist, falls is. width ( ) > 0 , andernfalls istNgleich str. max_size ( ) , - der End-of-File-Zustand im Stream is auftritt, oder
- std:: isspace ( c, is. getloc ( ) ) für das nächste Zeichen c in is true ist (dieses Leerzeichen bleibt im Eingabestream).
Falls keine Zeichen extrahiert werden, wird std::ios::failbit auf is gesetzt, was std::ios_base::failure auslösen kann.
Schließlich ruft es is. width ( 0 ) auf, um die Effekte von std::setw , falls vorhanden, aufzuheben.
Inhaltsverzeichnis |
Exceptions
Parameter
| os | - | ein Zeichenausgabestrom |
| is | - | ein Zeicheneingabestrom |
| str | - | die einzufügende oder zu extrahierende Zeichenkette |
Rückgabewert
Beispiel
#include <iostream> #include <sstream> #include <string> int main() { std::string greeting = "Hello, whirled!"; std::istringstream iss(greeting); std::string hello_comma, whirled, word; iss >> hello_comma; iss >> whirled; std::cout << greeting << '\n' << hello_comma << '\n' << whirled << '\n'; // Reset the stream iss.clear(); iss.seekg(0); while (iss >> word) std::cout << '+' << word << '\n'; }
Ausgabe:
Hello, whirled! Hello, whirled! +Hello, +whirled!
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 25 | C++98 | n war der kleinere Wert von os. width ( ) und str. size ( ) | n ist der größere Wert von beiden |
| LWG 90 | C++98 |
std::
isspace
(
c, getloc
(
)
)
wurde zur Überprüfung von
Leerzeichen verwendet, aber
getloc
ist nicht deklariert in
<string>
|
ersetzte
getloc
(
)
durch is. getloc ( ) |
| LWG 91 | C++98 |
operator>>
verhielt sich nicht
wie eine FormattedInputFunction |
verhält sich wie eine
FormattedInputFunction |
| LWG 211 | C++98 |
operator>>
setzte
failbit
nicht, wenn kein Zeichen extrahiert wurde
|
setzt
failbit
|
| LWG 435 | C++98 |
Zeichen wurden eingefügt durch
os.
rdbuf
(
)
-
>
sputn
(
str.
data
(
)
, n
)
,
und die Lösung von LWG-Problem 25 machte das Verhalten undefiniert, wenn os. width ( ) größer ist als str. size ( ) |
bestimmt zuerst die Auffüllung
und fügt die aufgefüllte Zeichensequenz stattdessen ein |
| LWG 586 | C++98 |
operator<<
verhielt sich nicht
wie eine FormattedOutputFunction |
verhält sich wie eine
FormattedOutputFunction |
Siehe auch
|
(C++17)
|
führt Stream-Ausgabe für String-Views durch
(Funktions-Template) |