c++ 使用 std::copy 将 istream 复制到 char* 缓冲区

c++ using std::copy to copy an istream to a char* buffer

有没有办法将 std::istream 复制到由 returns char* 的“data()”方法访问的数据缓冲区?例如,下面的代码示例。它会导致段错误。我知道我可以在此示例中使用 std::back_inserter,但我的目标不是最终​​复制到矢量。

#include <sstream>
#include <algorithm>
#include <iterator>
#include <vector>
int main() {
  std::vector<char> vec;
  std::istringstream ss("foobar");
  std::copy(std::istream_iterator<char>(ss), std::istream_iterator<char> 
  (),vec.data());
}

只要预先分配了足够的存储空间,复制就没有问题:

#include <sstream>
#include <algorithm>
#include <iterator>
#include <vector>
int main()
{
  std::vector<char> vec(6); //note what happens here!
  std::istringstream ss("foobar");
  std::copy(std::istream_iterator<char>(ss), std::istream_iterator<char> 
  (), vec.data());
}