複数のiteratorとかchar*とかをひとつのiteratorと見せかけれるものはありませんか?

std::vector buf;

void f(char* s, int n) {
 typedef std::istream_iterator<char> input_iterator;
 std::copy( input_iterator(source), input_iterator(), std::back_inserter(buf) );  // これと
 std::copy( buf.begin(), buf.end(), s );                          // これを一回で済ませたいです
}

がんばれば自分で作れなくもないと思うのですが、標準やboostとかで用意されてるものがあればそちらを使いたいです