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));
}
如题。
我假设答案是"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));
}