ostreambuf_iterator 类
类模板 ostreambuf_iterator 描述一个输出迭代器对象,该对象使用提取 operator>> 将连续的字符元素写入输出流。 ostreambuf_iterator
与 ostream_iterator 类迭代器的不同之处在于,要插入输出流的对象类型为字符而不是泛型类型。
语法
template <class CharType = char class Traits = char_traits <CharType>>
参数
CharType
表示 ostreambuf_iterator 字符类型的类型。 此参数为可选参数,默认值为 char
。
特征
表示 ostreambuf_iterator 字符类型的类型。 此参数为可选参数,默认值为 char_traits
<CharType>。
备注
ostreambuf_iterator 类必须满足输出迭代器的需求。 可使用 ostreambuf_iterator
直接向输出流中写入算法。 此类可提供一种低级别流迭代器,允许访问字符形式的原始(未格式化)I/O 流,并且能够绕过与高级别流迭代器相关联的缓冲和字符转换。
构造函数
构造函数 | 说明 |
---|---|
ostreambuf_iterator | 构造一个 ostreambuf_iterator ,以便经初始化后向输出流写入字符。 |
Typedef
类型名称 | 说明 |
---|---|
char_type | 为 ostreambuf_iterator 的字符类型提供的类型。 |
ostream_type | 为 ostream_iterator 的流类型提供的类型。 |
streambuf_type | 为 ostreambuf_iterator 的流类型提供的类型。 |
traits_type | 为 ostream_iterator 的字符特征类型提供的类型。 |
成员函数
成员函数 | 说明 |
---|---|
失败 | 测试插入到输出流缓冲区的操作是否失败。 |
运算符
运算符 | 说明 |
---|---|
operator* | 用于实现输出迭代器表达式 * i = x 的取消引用运算符。 |
operator++ | 一种非功能性递增运算符,可向调用该运算之前所处理的同一对象返回 ostreambuf_iterator 。 |
operator= | 此运算符会将一个字符插入到关联的流缓冲区。 |
要求
标头:<iterator>
命名空间: std
ostreambuf_iterator::char_type
为 ostreambuf_iterator
的字符类型提供的类型。
typedef CharType char_type;
注解
该类型是模板参数 CharType
的同义词。
示例
// 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
测试插入到输出流缓冲区的操作是否失败。
bool failed() const throw();
返回值
如果之前成功插入到输出流缓冲区,则为 true
;否则为 false
。
注解
如果在以前对成员 operator=
的任何使用中,对 subf_->sputc
的调用返回 eof,则成员函数将返回 true
。
示例
// 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*
用于实现输出迭代器表达式 * i = x 的非功能性的取消引用运算符。
ostreambuf_iterator<CharType, Traits>& operator*();
返回值
ostreambuf 迭代器对象。
备注
此运算符函数仅存在于输出迭代器表达式 * i = x 中,以便将字符输出到流缓冲区。 应用于 ostreambuf 迭代器,它将返回该迭代器;*iter 返回 iter,
示例
// 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++
一种非功能性递增运算符,可向调用该运算之前所处理的同一字符返回 ostream 迭代器。
ostreambuf_iterator<CharType, Traits>& operator++();
ostreambuf_iterator<CharType, Traits>& operator++(int);
返回值
对最初被寻址的字符的引用或对可转换为 ostreambuf_iterator
<CharType, Traits> 的实现定义的对象的引用。
注解
该运算符用于实现输出迭代器表达式 * i = x。
示例
// 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=
此运算符会将一个字符插入到关联的流缓冲区。
ostreambuf_iterator<CharType, Traits>& operator=(CharType _Char);
参数
_Char
要插入到流缓冲区的字符。
返回值
对插入到流缓冲区的字符的引用。
备注
用于实现输出迭代器表达式 * i = x 以写入输出流的赋值运算符。
示例
// 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
构造一个 ostreambuf_iterator
,以便经初始化后向输出流写入字符。
ostreambuf_iterator(streambuf_type* strbuf) throw();
ostreambuf_iterator(ostream_type& Ostr) throw();
参数
strbuf
用于初始化输出流缓冲区指针的输出 streambuf 对象。
Ostr
用于初始化输出流缓冲区指针的输出流对象。
注解
第一个构造函数通过 strbuf 初始化输出流缓冲区指针。
第二个构造函数通过 Ostr
初始化输出流缓冲区指针。 rdbuf
。 存储的指针不能为空指针。
示例
// ostreambuf_iteratorOstreambuf_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
为 ostream_iterator
的流类型提供的类型。
typedef basicOstream<CharType, Traits> ostream_type;
注解
该类型是 basicOstream
<CharType, Traits> 的同义词
示例
有关如何声明和使用 ostream_type
的示例,请参阅 ostreambuf_iterator。
ostreambuf_iterator::streambuf_type
为 ostreambuf_iterator
的流类型提供的类型。
typedef basic_streambuf<CharType, Traits> streambuf_type;
注解
该类型为 basic_streambuf
<CharType, Traits> 的同义词,这是 I/O 缓冲区的流类,当专用化为字符类型 char
时将成为 streambuf
。
示例
有关如何声明和使用 streambuf_type
的示例,请参阅 ostreambuf_iterator。
ostreambuf_iterator::traits_type
为 ostream_iterator
的字符特征类型提供的类型。
typedef Traits traits_type;
备注
该类型是模板参数 Traits
的同义词。
示例
// 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.
*/