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迭代器。因?yàn)檫@里的以binary把數(shù)據(jù)保存到buffer,若用stream,則以文本格式。
2. boost::iostream
boost::iostreams::stream<boost::iostreams::array_source> stream((const char*)buffer, sz);
然后跟使用istream一樣使用即可。
3. 把buffer存入stream
stl提供的stream有fstream系列和stringstream系列。stringstream也可以存放binary格式。這里用boost提供的bufferstream,讓代碼看起來(lái)更簡(jiǎn)介。
boost::interprocess::bufferstream input_stream(&data[0], data.size());
output(input_stream, "test.jpg");