...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Copyright © 2019 Glen Joseph Fernandes
The header <boost/utility/ostream_string.hpp> provides the function template
boost::ostream_string
for formatted output that
satisfies the requirements of [ostream.formatted.reqmts].
The inserter for class template basic_string_view
could be implemented as follows:
template<class charT, class traits> std::basic_ostream<charT, traits>& operator<<(std::basic_ostream<charT, traits>& os, const basic_string_view<charT, traits>& str) { return boost::ostream_string(os, str.data(), str.size()); }
namespace boost { template<class charT, class traits> std::basic_ostream<charT, traits>& ostream_string(std::basic_ostream<charT, traits>& os, const charT* data, std::size_t size); } /* boost */
template<class charT, class traits> std::basic_ostream<charT, traits>& ostream_string(std::basic_ostream<charT, traits>&
os, const charT* data, std::size_t size);
Behaves like a formatted inserter (as described in [ostream.formatted.reqmts])
of os
. Creates
a character sequence seq
of size
characters
starting at data
,
each widened using os.widen()
([basic.ios.members]). Determines
padding for seq
as described in [ostream.formatted.reqmts]. Inserts seq
into os
.
Calls width(0)
.
os
.
basic_string_ref
and basic_string_view
stream
insertion operators to write directly to the basic_streambuf
and refactored that functionality into this common utility.
Last revised: December 10, 2019 at 00:21:48 GMT |