向量<char>的输入流 - 向量迭代器不可解除引用

Mir*_*rco 3 c++ boost vector stream

首先,我是来自Java的C++新手.我想做一件简单的事情:使用URDL-libs从Web加载图片并将其保存到char-vector.加载图像工作正常,我能够将其保存到磁盘,但当我尝试将其加载到char-vector时,我在运行时收到此错误:

Expression: vector iterator not dereferencable
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

urdl::istream inputStream( url );
if( inputStream )
{
    inputStream >> std::noskipws;
    istream_iterator<char> inputStreamIterator( inputStream ), inputStreamEnd;
    string dateiname = "test.png";
    vector<char> imageVector;

    ofstream outputStream( dateiname, ios_base::binary );
    ostream_iterator<char> outputStreamIterator(outputStream);
    copy( inputStreamIterator, inputStreamEnd,  imageVector.begin());
}
Run Code Online (Sandbox Code Playgroud)

Syl*_*sne 7

std::vector<char>没有容量,也无法std::copy直接使用.相反,你应该使用std::back_insert_iterator它来调用push_back()你的std::vector.构建这样一个迭代器的最简单方法是使用std::back_inserter模板函数.

std::copy(inputStreamIterator, inputStreamEnd,
    std::back_inserter(imageVector));
Run Code Online (Sandbox Code Playgroud)