1. 把文件讀入到buffer
std::ifstream ifs("d:\\test.jpg", std::ios::in | std::ios::binary);
std::vector<char> data((std::istreambuf_iterator<char>(ifs)), std::istreambuf_iterator<char>());
注意:這里使用的是stream buffer的迭代器,而不是stream迭代器。因為這里的以binary把數據保存到buffer,若用stream,則以文本格式。
2. 把buffer存入stream
stl提供的stream有fstream系列和stringstream系列。stringstream也可以存放binary格式。這里用boost提供的bufferstream,讓代碼看起來更簡介。
boost::interprocess::bufferstream input_stream(&data[0], data.size());
output(input_stream, "test.jpg");