可以在std :: ostream上使用std :: back_insert_iterator吗?

时间:2015-08-09 11:10:42

标签: c++ boost stl iterator iostream

根据标题问题。

我认为答案是“不,因为std::back_insert_iterator对象在容器上调用push_back()。”

如果答案实际上是no,那么我可以在我的模板函数中使用任何模板类迭代器来附加到std::string,附加到std::vector<char>,然后写入std::ostream

1 个答案:

答案 0 :(得分:5)

这是std::ostream_iterator的用途:

#include <iostream>
#include <string>
#include <vector>
#include <iterator>
#include <algorithm>

int main()
{
    char c[] = { 'a', 'b', 'c', 'd' };

    std::vector<char> v;
    std::string s;

    std::copy(c, c+4, std::back_inserter(v));
    std::copy(c, c+4, std::back_inserter(s));
    std::copy(c, c+4, std::ostream_iterator<char>(std::cout));
}

DEMO

相关问题