ostream_iterator输出流迭代器的简单使用(copy作打印功能)
先放几行代码:
vector<int> v = {54,3,89,7};
ostream_iterator<int> out_iter(cout, " ");
copy(v.cbegin(), v.cend(), out_iter);
//以上两行,效果同
for_each(v.cbegin(),v.cend(),[](int val){cout<<val<<" ";});
其实如果遇到将容器中的各元素以指定符号连接。比如字符串容器,想要将容器中的字符串相加,但中间以;分割。结果为ab;cd;ef。正常写法是遍历后相加。
而ostream_iterator
提供了另一种可能,代码如下:
#include <iostream>
#include <sstream>
#include <vector>
#include <iterator>
#include <algorithm>
using namespace std;
int main(int argc, char *argv[])
{
vector<int> v= {54,3,89,7};
ostream_iterator<int> out_iter( cout, " ");
copy(v.cbegin(), v.cend(), out_iter);
ostringstream oss;
vector< string> vec = {"ab","bc","de"};
vector< string> vec2 = { "ab", "bc", "de" };
ostream_iterator< string> outIter(oss, ";");
copy(vec.cbegin(),vec.cend(),outIter);
string spliceStr = oss.str();
cout << spliceStr << endl;
oss.str(""); // 清空
copy(vec2.cbegin(), vec2.cend(), outIter);
string spliceStr2 = oss.str();
cout << spliceStr2 << endl;
getchar();
return 0;
}