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

Ash*_*hot 3 c++ type-conversion stdvector string-view c++17

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

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

Rem*_*eau 5

如果char您的系统上是 8 位(大多数系统都是),您可以简单地reinterpret_castvector's 数据发送到char*并从中查看,例如:

std::vector<uint8_t> data;
...
std::string_view sv(reinterpret_cast<char*>(data.data()), data.size());
Run Code Online (Sandbox Code Playgroud)

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

std::vector<uint8_t> data;
...
std::string_view(data.begin(), data.end());
Run Code Online (Sandbox Code Playgroud)

  • `std::basic_string_view&lt;uint8_t&gt; sv(data.data(), data.size())` 可能有用吗? (5认同)