Обычно я хотел бы пойти с вспомогательным классом, у которого есть метод, который принимает либо вектор, либо пользовательскую структуру, которая действует как диапазон - то есть pair<void*,int>
, или, возможно, даже диапазон (но мне не разрешаютC ++ 14 мелков).
Если данные действительно основаны на символах, то std :: string и string могут работать хорошо, но если это действительно двоичные данные, лучше использовать инкапсуляцию vector и vector, IMBO.
Я все еще не хочу вызывать это напрямую из кода приложения, если на самом деле есть структурированные данные. Вы можете легко написать метод, который принимает ожидаемый тип структуры и генерирует указатель и sizeof (instance).
Вы можете написать универсальный шаблон, который будет принимать любую структуру и преобразовывать ее в void * / char * и length, но это приведет к открытию вашего кода для большего количества аварий.