Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The latest version of this topic can be found at ostreambuf_iterator Class.
The template class ostreambuf_iterator describes an output iterator object that writes successive character elements onto the output stream with the extraction operator>>. The ostreambuf_iterators differ from those of the ostream_iterator Class in having characters instead of a generic type at the type of object being inserted into the output stream.
Syntax
template <class CharType = char class Traits = char_traits <CharType>>
Parameters
CharType
The type that represents the character type for the ostreambuf_iterator. This argument is optional and the default value is char.
Traits
The type that represents the character type for the ostreambuf_iterator. This argument is optional and the default value is char_traits< CharType>.
Remarks
The ostreambuf_iterator class must satisfy the requirements for an output iterator. Algorithms can be written directly to output streams using an ostreambuf_iterator. The class provides a low-level stream iterator that allows access to the raw (unformatted) I/O stream in the form of characters and the ability to bypass the buffering and character translations associated with the high-level stream iterators.
Constructors
| ostreambuf_iterator | Constructs an ostreambuf_iterator that is initialized to write characters to the output stream. |
Typedefs
| char_type | A type that provides for the character type of the ostreambuf_iterator. |
| ostream_type | A type that provides for the stream type of the ostream_iterator. |
| streambuf_type | A type that provides for the stream type of the ostreambuf_iterator. |
| traits_type | A type that provides for the character traits type of the ostream_iterator. |
Member Functions
| failed | Tests for failure of an insertion into the output stream buffer. |
Operators
| operator* | Dereferencing operator used to implement the output iterator expression * i = x. |
| operator++ | A nonfunctional increment operator that returns an ostreambuf_iterator to the same object it addressed before the operation was called. |
| operator= | The operator inserts a character into the associated stream buffer. |
Requirements
Header: <iterator>
Namespace: std
ostreambuf_iterator::char_type
A type that provides for the character type of the ostreambuf_iterator.
typedef CharType char_type;
Remarks
The type is a synonym for the template parameter CharType.
Example
// ostreambuf_iterator_char_type.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
typedef ostreambuf_iterator<char>::char_type CHT1;
typedef ostreambuf_iterator<char>::traits_type CHTR1;
// ostreambuf_iterator for stream cout
// with new line delimiter:
ostreambuf_iterator< CHT1, CHTR1> charOutBuf ( cout );
// Standard iterator interface for writing
// elements to the output streambuf:
cout << "The characters written to the output stream\n"
<< " by charOutBuf are: ";
*charOutBuf = 'O';
charOutBuf++;
*charOutBuf = 'U';
charOutBuf++;
*charOutBuf = 'T';
charOutBuf++;
cout << "." << endl;
}
\* Output:
The characters written to the output stream
by charOutBuf are: OUT.
*\
ostreambuf_iterator::failed
Tests for failure of an insertion into the output stream buffer.
bool failed() const throw();
Return Value
true if no insertion into the output stream buffer has failed earlier; otherwise false.
Remarks
The member function returns true if, in any prior use of member operator=, the call to subf_-> sputc returned eof.
Example
// ostreambuf_iterator_failed.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
// ostreambuf_iterator for stream cout
ostreambuf_iterator<char> charOut ( cout );
*charOut = 'a';
charOut ++;
*charOut = 'b';
charOut ++;
*charOut = 'c';
cout << " are characters output individually." << endl;
bool b1 = charOut.failed ( );
if (b1)
cout << "At least one insertion failed." << endl;
else
cout << "No insertions failed." << endl;
}
\* Output:
abc are characters output individually.
No insertions failed.
*\
ostreambuf_iterator::operator*
A nonfunctional dereferencing operator used to implement the output iterator expression * i = x.
ostreambuf_iterator<CharType, Traits>& operator*();
Return Value
The ostreambuf iterator object.
Remarks
This operator functions only in the output iterator expression * i = x to output characters to stream buffer. Applied to an ostreambuf iterator, it returns the iterator; *iter returns iter,
Example
// ostreambuf_iterator_op_deref.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
// ostreambuf_iterator for stream cout
// with new line delimiter
ostreambuf_iterator<char> charOutBuf ( cout );
// Standard iterator interface for writing
// elements to the output stream
cout << "Elements written to output stream:" << endl;
*charOutBuf = 'O';
charOutBuf++; // no effect on iterator position
*charOutBuf = 'U';
*charOutBuf = 'T';
}
\* Output:
Elements written to output stream:
OUT
*\
ostreambuf_iterator::operator++
A nonfunctional increment operator that returns an ostream iterator to the same character it addressed before the operation was called.
ostreambuf_iterator<CharType, Traits>& operator++();
ostreambuf_iterator<CharType, Traits>& operator++(int);
Return Value
A reference to the character originally addressed or to an implementation-defined object that is convertible to ostreambuf_iterator< CharType, Traits>.
Remarks
The operator is used to implement the output iterator expression * i = x.
Example
// ostreambuf_iterator_op_incr.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
// ostreambuf_iterator for stream cout
// with new line delimiter
ostreambuf_iterator<char> charOutBuf ( cout );
// Standard iterator interface for writing
// elements to the output stream
cout << "Elements written to output stream:" << endl;
*charOutBuf = 'O';
charOutBuf++; // No effect on iterator position
*charOutBuf = 'U';
*charOutBuf = 'T';
}
\* Output:
Elements written to output stream:
OUT
*\
ostreambuf_iterator::operator=
The operator inserts a character into the associated stream buffer.
ostreambuf_iterator<CharType, Traits>& operator=(
CharType _Char);
Parameters
_Char
The character to be inserted into the stream buffer.
Return Value
A reference to the character inserted into the stream buffer.
Remarks
Assignment operator used to implement the output iterator expression * i = x for writing to an output stream.
Example
// ostreambuf_iterator_op_assign.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
// ostreambuf_iterator for stream cout
// with new line delimiter
ostreambuf_iterator<char> charOutBuf ( cout );
// Standard iterator interface for writing
// elements to the output stream
cout << "Elements written to output stream:" << endl;
*charOutBuf = 'O';
charOutBuf++; // No effect on iterator position
*charOutBuf = 'U';
*charOutBuf = 'T';
}
\* Output:
Elements written to output stream:
OUT
*\
ostreambuf_iterator::ostreambuf_iterator
Constructs an ostreambuf_iterator that is initialized to write characters to the output stream.
ostreambuf_iterator(streambuf_type* strbuf) throw();
ostreambuf_iterator(ostream_type& _Ostr) throw();
Parameters
strbuf
The output streambuf object used to initialize the output stream-buffer pointer.
_Ostr
The output stream object used to initialize the output stream-buffer pointer.
Remarks
The first constructor initializes the output stream-buffer pointer with strbuf.
The second constructor initializes the output stream-buffer pointer with _Ostr. rdbuf. The stored pointer must not be a null pointer.
Example
// ostreambuf_iterator_ostreambuf_iterator.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
// ostreambuf_iterator for stream cout
ostreambuf_iterator<char> charOut ( cout );
*charOut = 'O';
charOut ++;
*charOut = 'U';
charOut ++;
*charOut = 'T';
cout << " are characters output individually." << endl;
ostreambuf_iterator<char> strOut ( cout );
string str = "These characters are being written to the output stream.\n ";
copy ( str.begin ( ), str. end ( ), strOut );
}
\* Output:
OUT are characters output individually.
These characters are being written to the output stream.
*\
ostreambuf_iterator::ostream_type
A type that provides for the stream type of the ostream_iterator.
typedef basic_ostream<CharType, Traits> ostream_type;
Remarks
The type is a synonym for basic_ostream< CharType, Traits>
Example
See ostreambuf_iterator for an example of how to declare and use ostream_type.
ostreambuf_iterator::streambuf_type
A type that provides for the stream type of the ostreambuf_iterator.
typedef basic_streambuf<CharType, Traits> streambuf_type;
Remarks
The type is a synonym for basic_streambuf< CharType, Traits>, a stream class for I/O buffers that becomes streambuf when specialized to character type char.
Example
See ostreambuf_iterator for an example of how to declare and use streambuf_type.
ostreambuf_iterator::traits_type
A type that provides for the character traits type of the ostream_iterator.
typedef Traits traits_type;
Remarks
The type is a synonym for the template parameter Traits.
Example
// ostreambuf_iterator_traits_type.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
typedef ostreambuf_iterator<char>::char_type CHT1;
typedef ostreambuf_iterator<char>::traits_type CHTR1;
// ostreambuf_iterator for stream cout
// with new line delimiter:
ostreambuf_iterator< CHT1, CHTR1> charOutBuf ( cout );
// Standard iterator interface for writing
// elements to the output streambuf:
cout << "The characters written to the output stream\n"
<< " by charOutBuf are: ";
*charOutBuf = 'O';
charOutBuf++;
*charOutBuf = 'U';
charOutBuf++;
*charOutBuf = 'T';
charOutBuf++;
cout << "." << endl;
}
\* Output:
The characters written to the output stream
by charOutBuf are: OUT.
*\
See Also
<iterator>
Thread Safety in the C++ Standard Library
Standard Template Library