![]() |
hamigaki::ostream_iterator —
最後にデリミタを出力しないstd::ostream_iterator
template<typename T, typename CharT = char,
typename Traits = std::char_traits<CharT> >
class ostream_iterator
: : public std::iterator<std::output_iterator_tag,void,void,void,void>
{
public:
// types
typedef CharT char_type;
typedef Traits traits_type;
typedef std::basic_ostream<CharT,Traits> ostream_type;
// construct/copy/destruct
explicit ostream_iterator(ostream_type&);
ostream_iterator(ostream_type&, const CharT*);
// operators
ostream_iterator<T,CharT,Traits>& operator=(T);
ostream_iterator<T,CharT,Traits>& operator*();
ostream_iterator<T,CharT,Traits>& operator++();
private: ostream_type* out_stream;
private: const CharT* delim;
};
hamigaki::ostream_iterator
は、std::ostream_iterator
改良版である。std::ostream_iterator
は大変便利であるが、最後の値を出力した後にもデリミタが出力されてしまう。この動作はCSVの出力など多くの状況で好ましくない。hamigaki::ostream_iterator
はこの問題を解決するためのもであり、1回目の出力の際にはデリミタを出力せず、2回目以降の出力の前にデリミタを出力する。
製作著作 © 2006, 2007 Takeshi Mouri |