cpp / latest / string / basic_string_view / operator_ltlt.html /

operator<<(std::basic_string_view)

Defined in header <string_view>
template< class CharT, class Traits >
std::basic_ostream<CharT, Traits>&
    operator<<( std::basic_ostream<CharT, Traits>& os, 
                std::basic_string_view <CharT, Traits> v );
(since C++17)

Behaves as a FormattedOutputFunction. After constructing and checking the sentry object, determines the output format padding as follows:

a) If v.size() is not less than os.width(), uses the range [v.begin(), v.end()) as-is
b) Otherwise, if (os.flags() & ios_base::adjustfield) == ios_base::left, places os.width()-v.size() copies of the os.fill() character after the character sequence
c) Otherwise, places os.width()-v.size() copies of the os.fill() character before the character sequence

Then stores each character from the resulting sequence (the contents of v 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.

Exceptions

May throw std::ios_base::failure if an exception is thrown during output.

Parameters

os - a character output stream
v - the view to be inserted

Return value

os.

Example

#include <iomanip>
#include <iostream>
#include <string_view>
 
int main() {
    constexpr std::string_view s{"abc"};
    constexpr int width{5};
    constexpr char fill{'-'};
 
    std::cout
       << std::setfill(fill)
       << "[" << s << "]\n"
       << "[" << std::left << std::setw(width) << s << "]\n"
       << "[" << std::right << std::setw(width) << s << "]\n";
}

Output:

[abc]
[abc--]
[--abc]

See also

performs stream input and output on strings
(function template)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/string/basic_string_view/operator_ltlt