Behaves as a
FormattedOutputFunction. After constructing and checking the sentry object,
determines the output format padding.
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, if any.
2)Behaves as a
FormattedInputFunction. After constructing and checking the sentry object, which may skip leading whitespace, first clears
strwith
str.erase(), then reads characters from
isand appends them to
stras if by
str.append(1, c), until one of the following conditions becomes true:
N
characters are read, where N
is is.width() if is.width() > 0, otherwise N
is str.max_size(),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::setw, if any.
[edit] Exceptions 2)May throw
std::ios_base::failureif no characters are extracted from
is(e.g. the stream is at end of file, or consists of whitespace only), or if an exception is thrown during input.
[edit] Parameters os - a character output stream is - a character input stream str - the string to be inserted or extracted [edit] Return value1) os
2) is
[edit] 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![edit] 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 checkgetloc
is not declared in <string> replaced getloc()
operator>>
did not behave
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),
operator<<
did not behave
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4