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) | |
1) Behaves as an FormattedOutputFunction. After constructing and checking the sentry object, determines the output format padding as follows:
- a) If
str.size()is not less thanos.width(), uses the range[str.begin(), str.end())as-is - b) Otherwise, if (os.flags() & ios_base::adjustfield) == ios_base::left, places
os.width()-str.size()copies of theos.fill()character after the character sequence - c) Otherwise, places
os.width()-str.size()copies of theos.fill()character before the character sequence
Then stores each character from the resulting sequence (the contents of str plus padding) to the output stream os as if by calling os.rdbuf()->sputn(seq, n), where n=std::max(os.width(), str.size())
Finally, calls os.width(0) to cancel the effects of std::setw, if any.
2) Behaves as an FormattedInputFunction. After constructing and checking the sentry object, which may skip leading whitespace, first clears str with str.erase(), then reads characters from is and appends them to str as if by str.append(1, c), until one of the following conditions becomes true:
-
Ncharacters are read, whereNisis.width()ifis.width() > 0, otherwiseNisstr.max_size() - the end-of-file condition occurs in the stream
is - std::isspace(c,is.getloc()) is true for the next character
cinis(this whitespace character remains in the input stream).
If no characters are extracted then std::ios::failbit is set on is, which may throw std::ios_base::failure.
Finally, calls os.width(0) to cancel the effects of std::setw, if any.
Contents |
[edit] Exceptions
1) may throw std::ios_base::failure if an exception is thrown during output.
2) may throw std::ios_base::failure if 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 value
1) os
2) is
[edit] Example
#include <iostream> #include <string> #include <sstream> int main() { std::string greeting = "Hello, whirled!"; std::istringstream is(greeting); std::string hello_comma; is >> hello_comma; std::cout << greeting << '\n' << hello_comma << '\n'; }
Output:
Hello, whirled! Hello,