Преобразование вектора uint8 в строку
У меня есть указатель на вектор типа uint8.
Как я возьму этот указатель и преобразую данные в вектор в полный строковый представитель его содержимого?
Ответы
Ответ 1
Вы можете просто инициализировать std::string
с помощью последовательности, полученной из std::vector<uint8_t>
:
std::string str(v->begin(), v->end());
Нет необходимости играть в какие-либо трюки, проверяющие, является ли std::vector<uint8_t>
пустым: если он есть, диапазон будет пустым. Однако вы можете проверить, равен ли указатель v
равным null. Вышеизложенное требует, чтобы он указывал на действительный объект.
Ответ 2
Для тех, кто хочет, чтобы преобразование выполнялось после объявления строки, вы можете использовать std :: string :: assign(), например:
std::string str;
std::vector<uint8_t> v;
str.assign(v.begin(), v.end());
Ответ 3
vector<uint8_t> *p;
string str(
p && !p->empty() ? &*p->begin() : NULL,
p && !p->empty() ? &*p->begin() + p->size() : NULL);