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

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

如题。

我假设答案是"No, because the std::back_insert_iterator object calls push_back() on the container."

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

这就是 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