Сейчас со строками работать неудобно. Нужно подумать над интерфейсом для работы с ними.
Есть два пути:
Сделать string альясом для массива байт в коде, а при парсинге дополнительно проверять терминатор. Тогда можно будет писать так:
const auto * str = static_cast<char *>(msg.my_string.ptr)
Сделать string полноценно отдельным типом и обрабатывать его тоже отдельно. Это вроде бы правильнее, но как его аккуратно вписать придется подумать, он вроде бы и не plain, и не встроенная структура, а в то же время и динамический.
Еще из предложений всегда передавать нул терминированную строку. Если нет терминатора, то на этапе генеренного парсинга возвращать ошибку.
Сейчас со строками работать неудобно. Нужно подумать над интерфейсом для работы с ними.
Есть два пути:
Еще из предложений всегда передавать нул терминированную строку. Если нет терминатора, то на этапе генеренного парсинга возвращать ошибку.