Namespaces
Variants
Views
Actions

std::operator<<,>>

From cppreference.com
 
 
 
std::basic_string
 
Defined in header <string>
template <class CharT, class Traits, class Allocator>

std::basic_ostream<CharT, Traits>&
    operator<<(std::basic_ostream<CharT, Traits>& os,

               const std::basic_string<CharT, Traits, Allocator>& str);
(1)
template <class CharT, class Traits, class Allocator>

std::basic_istream<CharT, Traits>&
    operator>>(std::basic_istream<CharT, Traits>& is,

               std::basic_string<CharT, Traits, Allocator>& str);
(2)

1) First, constructs a std::basic_ostream::sentry object, which flushes the tie()'d stream if necessary and checks for errors. If the sentry object returns false, exits immediately.

Afterwards, if the sentry object returns true, determines the output format padding in the same manner as stage 3 of num_put::put().

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).

2) First, constructs a std::basic_istream::sentry object, which flushes the tie()'d stream if necessary, extracts and discards all leading whitespace characters unless the ios_base::skipws flag was cleared, and checks for errors. If the sentry object returns false, exits immediately.

Afterwards, if the sentry object returns true, 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:

  • N characters are read, where N is is.width() if is.width() > 0, otherwise N is str.max_size()
  • the end-of-file condition occurs in the stream is
  • std::isspace(c,is.getloc()) is true for the next character c in is (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) and destroys the {c|std::basic_istream::sentry}} object.

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>
 
int main()
{
    std::string greeting = "Hello, whirled!"
    std::cout << greeting << '\n';
}

Output:

Hello, whirled!