Преобразовать вектор uint8 в строку

У меня есть указатель на вектор типа uint8.

Как мне взять этот указатель и преобразовать данные в векторе в полную строку, представляющую его содержимое?

13

Решение

Вы можете просто инициализировать std::string с последовательностью, полученной из std::vector<uint8_t>:

std::string str(v->begin(), v->end());

Нет необходимости разыгрывать трюки, проверяя, std::vector<uint8_t> пусто: если оно есть, диапазон будет пустым. Тем не менее, вы можете проверить, если указатель v нулевой. Выше необходимо, чтобы он указывал на действительный объект.

19

Другие решения

Для тех, кто хочет, чтобы преобразование было сделано после объявлена ​​строка, вы можете использовать std :: string :: assign (), например:

std::string str;
std::vector<uint8_t> v;
str.assign(v.begin(), v.end());
4

vector<uint8_t> *p;
string str(
p && !p->empty() ? &*p->begin()             : NULL,
p && !p->empty() ? &*p->begin() + p->size() : NULL);
0
По вопросам рекламы [email protected]