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)
您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)