1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| struct response_range
{
size_t ixFirst;
size_t length;
vector<byte>>::const_iterator begin;
vector<byte>>::const_iterator end;
response_range() : ixFirst(), length(), begin(), end() {}
response_range(const vector<byte>> &response,vector<byte>>::const_iterator begin, &response,vector<byte>>::const_iterator end)
: begin(begin), end(end)
{
ixFirst = distance(response.begin(), begin);
length = distance(begin, end);
}
};
std::list<response_range> SplitResponse(const vector<byte>> &response, const vector<byte>> &delimiter)
{
std::list<response_range> ret;
auto startit = response.begin();
vector<byte>>::const_iterator found;
while((found=search(startit, response.end(), delimiter.begin(), delimiter.end()))!=response.end())
{
ret.push_back(response_range(startit, found));
startit=found;
advance(startit, delimiter.size());
}
return ret;
} |
Partager