Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <ostream>
- #include <string>
- template<typename Delim,
- typename CharT = char,
- typename Traits = std::char_traits<CharT>>
- class ostream_iterator {
- public:
- using delimiter_type = Delim;
- using char_type = CharT;
- using traits_type = Traits;
- using ostream_type = std::basic_ostream<char_type, traits_type>;
- using value_type = void;
- using difference_type = std::ptrdiff_t;
- using pointer = void;
- using reference = void;
- using iterator_category = std::output_iterator_tag;
- ostream_iterator(ostream_type& stream) :
- stream_ptr(std::addressof(stream)) { }
- ostream_iterator(ostream_type& stream, const delimiter_type& delimiter) :
- stream_ptr(std::addressof(stream)), delim(delimiter) { }
- ostream_iterator(ostream_type& stream, delimiter_type&& delimiter) :
- stream_ptr(std::addressof(stream)), delim(std::move(delimiter)) { }
- template<typename T>
- ostream_iterator& operator=(const T& value) {
- *stream_ptr << value << delim;
- return *this;
- }
- ostream_iterator& operator*() {
- return *this;
- }
- ostream_iterator& operator++() {
- return *this;
- }
- ostream_iterator& operator++(int) {
- return *this;
- }
- private:
- ostream_type* stream_ptr;
- delimiter_type delim;
- };
- template<typename Delim, typename CharT, typename Traits>
- ostream_iterator(std::basic_ostream<CharT, Traits>& stream, Delim delim)
- -> ostream_iterator<Delim, CharT, Traits>;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement