Используйте вектор, то, что вы пишете, это VLA, который не является допустимым C ++ (U8 char_array[d.length()]
). затем используйте std::copy
.
const std::string& d = frame.getData();
std::vector<U8> char_array(d.length() + 1, 0);
Вопрос в том, нужен ли вам конец строки \0
или нет, поэтому будет d.length () + 1, если вы хотите последний \0
. Тогда:
std::copy(std::begin(d), std::end(d), std::begin(char_array));
Обновление: очевидно, цель состоит в том, чтобы сохранить этот вектор в другом uint8_t[8]
, если это переменная с именем foo
, просто выполните:
std::copy(std::begin(d), std::end(d), std::begin(foo));
Но сначала проверьте длину ... И передайте структуру для заполнения в качестве ссылки. Также получите хорошую книгу по C ++.