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

Can a std::back_insert_iterator be used on a std::ostream?

提问人:magnus 提问时间:8/9/2015 更新时间:8/9/2015 访问量:813

问:

根据标题问题。

我假设答案是“否,因为对象调用容器。std::back_insert_iteratorpush_back()

如果答案实际上是否定的,那么是否有任何模板类迭代器可以在我的模板函数中用于追加到 a 、追加到 a 和写入 ?std::stringstd::vector<char>std::ostream

C++ Boost STL 迭代器 IOSTREAM

评论


答:

5赞 Piotr Skotnicki 8/9/2015 #1

这就是 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));
}

演示

评论

0赞 magnus 8/9/2015
谢谢。我调整了我的函数,使第四个参数现在被参数化为一个,而不是接受一个作为第四个参数(使用上一个模板参数类型的实例化)。非常感谢您的快速帮助。std::back_insert_iterator<Container>OutputIterator
1赞 Jonathan Mee 8/9/2015
@user1420752 如果这解决了您的问题,请单击答案左侧的复选标记接受。