operator<<,>>(std::basic_string)
Defined 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) | |
Then inserts each character from the resulting sequence seq (the contents of str plus padding) to the output stream os as if by calling os.rdbuf()->sputn(seq, n) , where n is std::max (os.width ( ), str.size ( ) ) Finally, calls os.width(0) to cancel the effects of std::setw
Equivalent to return os << std::basic_string_view <CharT, Traits> (str) ; |
(since C++17) |
-
N
characters are read, whereN
is is.width() if is.width() > 0, otherwiseN
is str.max_size() - the end-of-file condition occurs in the stream is, or
- std::isspace (c, is.getloc ( ) ) is true for the next character c in is
If no characters are extracted then std::ios::failbit is set on is, which may throw std::ios_base::failure
Finally, calls is.width(0) to cancel the effects of std::setwExceptions
Parameters
os | - | a character output stream |
is | - | a character input stream |
str | - | the string to be inserted or extracted |
Return value
Example
#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'; }
Output:
Hello, whirled! Hello, whirled! +Hello, +whirled!
Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
LWG 25 | C++98 | n was the smaller of os.width() and str.size() | n is the larger of them |
LWG 90 | C++98 |
std::isspace
(c, getloc(
)
)
was used to check for spaces, but getloc is not declared in <string>
|
replaced getloc()
with is.getloc() |
LWG 91 | C++98 |
operator>> did not behaveas a FormattedInputFunction |
behaves as a FormattedInputFunction |
LWG 211 | C++98 | operator>> did not set failbit if no character is extracted
|
sets failbit
|
LWG 435 | C++98 | characters were inserted by
os.rdbuf
(
)
-
>sputn(str.data
(
), n)
, and the resolution of LWG issue 25 made the behavior undefined if os.width() is larger than str.size() |
determines the padding first and inserts the padded character sequence instead |
LWG 586 | C++98 |
operator<< did not behaveas a FormattedOutputFunction |
behaves as a FormattedOutputFunction |
See also
(C++17)
|
performs stream output on string views (function template) |