ostreambuf_iterator 类

类模板 ostreambuf_iterator 描述一个输出迭代器对象,该对象使用提取 operator>> 将连续的字符元素写入输出流ostreambuf_iteratorostream_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.
*/

另请参阅

<iterator>
C++ 标准库中的线程安全
C++ 标准库参考