blob: 74b536a78300c7c6284e286c29fa821240c8acbf [file] [log] [blame]
////
Copyright 2019 Glen Joseph Fernandes
(glenjofe@gmail.com)
Distributed under the Boost Software License, Version 1.0.
(http://www.boost.org/LICENSE_1_0.txt)
////
# Insert Formatted Output, <boost/io/ostream_put.hpp>
:toc:
:toc-title:
:idprefix:
## Description
The header `<boost/io/ostream_put.hpp>` provides the function template
`boost::io::ostream_put` for formatted output that satisfies the requirements
of [ostream.formatted.reqmts].
## Example
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::io::ostream_put(os, str.data(), str.size());
}
```
## Reference
### Header Synopsis
```
namespace boost {
namespace io {
template<class charT, class traits>
std::basic_ostream<charT, traits>&
ostream_put(std::basic_ostream<charT, traits>& os,
const charT* data, std::size_t size);
} // io
} // boost
```
### Free functions
```
template<class charT, class traits>
std::basic_ostream<charT, traits>&
ostream_put(std::basic_ostream<charT, traits>& os,
const charT* data, std::size_t size);
```
[.specification]
Effects:: 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)`.
Returns:: `os`.
## Acknowledgments
Glen Fernandes updated the implementation of the `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.