Wyszukiwanie wzorca w vectorze charow + kopiowanie danych pomiędzy vectorami

0

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?

1
std::copy(it_pattern1, it_pattern2, std::back_inserter(buffer_msg));

Lub od razu

vector<char> msg(it_begin, it_end);

Pisane z palca <font size="1" color="white">bo jestem na lotnisku</span>

0

Po co używasz vector<char> skoro od tego jest string?

1 użytkowników online, w tym zalogowanych: 0, gości: 1