将std :: vector <uint8_t>转换为std :: string_view

时间:2020-08-19 22:38:26

标签: c++ type-conversion c++17 stdvector string-view

我有一些std::vector<uint8_t>类型的数据。我想将其解释为字符串,并对其进行一些子字符串检查。

可以通过将其转换为std::string来完成,这将导致复制数据。是否可以通过某种方式将其转换为std::string_view并对其进行搜索以避免复制。

1 个答案:

答案 0 :(得分:3)

假设char是系统上的8位(大多数系统是),则只需将reinterpret_cast的数据vectorchar*并从中查看例如:

std::vector<uint8_t> data;
...
std::string_view sv(reinterpret_cast<char*>(data.data()), data.size());

或者,在C ++ 20中,您可以改为使用迭代器:

std::vector<uint8_t> data;
...
std::string_view(data.begin(), data.end());