Dlaczego uparłeś się na wstring
? std::basic_string<>
to de facto std::vector<>
z kilkoma więcej funkcjami, przy czym wstring
to konkretyzacja dla wchar_t
, kiedy dla Twojego zastosowania char
(czyli string
) wydaje się znacznie logiczniejszy. Jedyne co może być problematyczne to konwersja bajtów unsigned ⟶ signed ⟶ unsigned, ale na wszystkich popularnych architekturach nie ma tutaj zaskoczeń (t.j. bit pattern pozostaje bez zmian), więc string
jak najbardziej nadaje się do takiego zastosowania. Przy czym, pisząc nadaje się mam jedynie na myśli, że będzie działał zgodnie z zamierzeniami, a nie, że jest dobrym rozwiązaniem.
Dlaczego nie użyjesz po prostu vector<uint8_t>
? Używając stringów jako kontenerów dajesz do zrozumienia, że ich zawartość jest tekstem, co w Twoim przypadku jest nieprawdą i może być mylące dla osób czytających Twój kod. vector
takiego problemu nie ma.