Witam,
Mam jakiś bufor bajtów:
vector<char> buffer;
W tym buforze znajdują się dane które otrzymuję z sieci, potrzebuję przefiltować te dane, znaleźć odpowiedni wzorzec, np. tagi otwierające i zamykające wiadomość XMLową.
Przychodzi mi np. coś w tym stylu:
./;pplwp.'}/<XML>Tu nasza wiadomosc, ktora chcemy sobie wydobyc</XML>sd02nd-;[sad
Mogę zdefiniować sobie jako stałe tagi zamykające i otwierające bo wiem jakie będą.
Tworzę sobie drugi vector, który będzie zawierał już tą wyodrębnioną wiadomość.
vector<char> buffer_msg;
Definiuję wzorce do wyszukania:
const char* pattern1 = "<XML>";
const char* pattern2 = "</XML>";
I wyszukuję sobie gdzie zaczyna się wzorzec pierwszy i drugi.
auto it_pattern1 = std::search(buffer.begin(), buffer.end(), pattern1, pattern1 + strlen(pattern1));
auto it_pattern2 = std::search(buffer.begin(), buffer.end(), pattern2, pattern2 + strlen(pattern2));
W jaki sposób teraz, mając iteratory pomiędzy którymi znajduje wiadomość którą chcę uzyskać mogę ją przekopiować z vectora buffer do buffer_msg?