STL ostream_iterator

STL ostream_iterator教程

STL 中的 ostream_iterator 和 输入流迭代器 恰好相反,输出流迭代器用于将数据写到指定的输出流(如 cout)中。另外,该类型迭代器本质上属于输出迭代器,假设 p 为一个输出迭代器,则它能执行 ++pp++*p=t 以及 *p++=t 等类似操作。

其次,输出迭代器底层是通过重载赋值(=)运算符实现的,即借助该运算符,每个赋值给输出流迭代器的元素都会被写入到指定的输出流中。

STL ostream_iterator头文件

头文件

#include <iterator> using namespace std;

说明

ostream_iterator 的模板类定义在 <iterator> 头文件,并位于 std 命名空间中。

创建流迭代器

语法一

std::ostream_iterator<int> out_it(std::cout);

通过调用该模板类的默认构造函数,可以创建了一个指定输出流的迭代器,由此,我们就创建了一个可将 int 类型元素写入到输出流(屏幕)中的迭代器。

语法二

std::ostream_iterator<int> out_it(std::cout,",");

和第一种写入方式不同之处在于,此方式在向输出流写入 int 类型元素的同时,还会附带写入一个逗号(,)。

语法三

std::ostream_iterator<int> out_it1(out_it);

在创建输出流迭代器时,可以用已有的同类型的迭代器,为其初始化。

案例

使用ostream_iterator

使用 ostream_iterator 访问元素

#include <iostream> #include <iterator> #include <string> using namespace std; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; ostream_iterator<string> out_it(cout); *out_it = "https://haicoder.net/cpp/cpp-tutorial.html"; cout << endl; ostream_iterator<int> out_it1(cout, ","); *out_it1 = 1; *out_it1 = 2; *out_it1 = 3; cout << endl; return 0; }

我们在 Linux 下使用 g++ 进行编译,具体命令如下:

g++ ostream_iterator.cpp

编译后,我们直接运行生成的二进制文件 a.out,如下图所示:

09_STL ostream_iterator.png

我们使用了 ostream_iterator 访问了元素。

STL ostream_iterator总结

STL 中的 ostream_iterator 和输入流迭代器恰好相反,输出流迭代器用于将数据写到指定的输出流(如 cout)中。另外,该类型迭代器本质上属于输出迭代器,假设 p 为一个输出迭代器,则它能执行 ++pp++*p=t 以及 *p++=t 等类似操作。