Единственный правильный комментарий пока от какого-то программиста, чувак. Так что все кредиты go ему.
Комментарий от Ian4264 совершенно неверный. Конечно, вы можете сделать reinterpret_cast.
Пожалуйста, прочитайте здесь о конструкторах std::string
. Вы используете конструктор № 4. Описание:
4) Создает строку с первым количеством символов строки символов, на которые указывает s. s может содержать нулевые символы. Длина строки считается. Поведение не определено, если [s, s + count) не является допустимым диапазоном.
Таким образом, даже если строка содержит 0 символов, C -Style string- «terminator», все байты массивов uint8_t будут скопированы. И если вы напечатаете строку, то она напечатает ВСЕ символы, даже непечатаемые символы после '\ 0'.
Это могут быть ваши "случайные" символы. Поскольку строка после вашего «терминатора», скорее всего, содержит неинициализированные значения.
Вам следует рассмотреть возможность использования конструктора с номером 5
5) Создает строку с содержимым, инициализированным с помощью копия строки символов с нулевым символом в конце, на которую указывает s. Длина строки определяется первым нулевым символом. Поведение не определено, если [s, s + Traits :: length (s)) не является допустимым диапазоном.
И если вам нужно добавить байты, это также возможно. std::string
может динамически расти.
Кстати: вы определяете свой двойной тип "std :: string qrData", который не будет компилироваться