
Module: Standard C++ Library Library: Iterators
ostreambuf_iteratoroutput_iterator
|
char_type failed() operator*() |
operator++() operator=() ostreambuf_iterator() |
ostream_type streambuf_type traits_type |
Writes successive characters onto the stream buffer object from which it was constructed
#include <iterator>
namespace std {
template<class charT, class traits = char_traits<charT> >
class ostreambuf_iterator;
}
The class template ostreambuf_iterator writes successive characters onto the stream buffer object from which it was constructed. operator=() is used to write the characters. In case of failure, the member function failed() returns true.
namespace std {
template<class charT, class traits = char_traits<charT> >
class ostreambuf_iterator
: public iterator <output_iterator_tag, void,
void, void, void>
{
public:
typedef charT char_type;
typedef traits traits_type;
typedef basic_streambuf<charT, traits> streambuf_type;
typedef basic_ostream<charT, traits> ostream_type;
ostreambuf_iterator(ostream_type& s) throw();
ostreambuf_iterator(streambuf_type *s) throw();
ostreambuf_iterator& operator=(char_type c);
ostreambuf_iterator& operator*();
ostreambuf_iterator& operator++();
ostreambuf_iterator operator++(int);
bool failed( ) const throw();
};
}
char_type
The type char_type is a synonym for the template parameter charT.
ostream_type
The type ostream_type is a synonym for the type basic_ostream<char_type, traits_type>.
streambuf_type
The type streambuf_type is a synonym for the type basic_streambuf<char_type, traits_type>.
traits_type
The type traits_type is a synonym for the template parameter traits.
ostreambuf_iterator(ostream_type& s) throw();
Constructs an ostreambuf_iterator that uses the basic_streambuf object pointed to by s.rdbuf()to output characters. If s.rdbuf() is a null pointer, calls to the member function failed() return true.
ostreambuf_iterator(streambuf_type *s) throw();
Constructs an ostreambuf_iterator that uses the basic_streambuf object pointed to by s to output characters. If s is a null pointer, calls to the member function failed() return true.
ostreambuf_iterator& operator=(char_type c);
Inserts the character c into the output sequence of the attached stream buffer. If the operation fails, calls to the member function failed() return true.
ostreambuf_iterator& operator++();
Returns *this.
ostreambuf_iterator operator++(int);
Returns *this.
ostreambuf_iterator operator*();
Returns *this.
bool failed() const throw();
Returns true if the iterator failed while inserting a character. Otherwise returns false.
//
// ostreambuf_iterator.cpp
//
#include <iostream> // for cout, endl
#include <iterator> // for istreambuf_iterator,
// ostreambuf_iterator
#include <fstream> // for filebuf
#include <stdio.h> // for tmpnam and remove
int main ( )
{
char namebuf [L_tmpnam];
// create a temporary filename
const char *fname = tmpnam (namebuf);
if (!fname)
return 1;
// create a filebuf object
std::filebuf buf;
// open the file and link it to the filebuf object
buf.open (fname, std::ios::in | std::ios::out |
std::ios::trunc);
// create an ostreambuf_iterator and link it to
// the filebuf object
std::ostreambuf_iterator<char, std::char_traits<char> >
out_iter (&buf);
// output into the file using the ostreambuf_iterator
for (char i = 64; i < 127; i++)
out_iter = i;
// seek to the beginning of the file
buf.pubseekpos(0);
// create an istreambuf_iterator and link it to
// the filebuf object
std::istreambuf_iterator<char, std::char_traits<char> >
in_iter (&buf);
// construct an end of stream iterator
std::istreambuf_iterator<char, std::char_traits<char> >
end;
std::cout << std::endl;
// output the contents of the file
while (!in_iter.equal (end))
std::cout << *in_iter++;
std::cout << std::endl;
// remove temporary file
remove (fname);
return 0;
}
Program Output:
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
basic_streambuf, basic_ostream, istreambuf_iterator
ISO/IEC 14882:1998 -- International Standard for Information Systems --Programming Language C++, Section 24.5.4
Copyright (c) 1994-2006 Rogue Wave Software, a Quovadx Division.
Licensed under the Apache License, Version 2.0.
Contact Rogue Wave about documentation or support issues. You can also seek help from other developers through the Apache stdcxx community (see below).