我有一些std::vector<uint8_t>
类型的数据。我想将其解释为字符串并对其进行子字符串检查。
可以通过将其转换为std::string
来实现,这将导致数据复制。是否可能以某种方式将其转换为std::string_view
并在其上搜索以避免复制它。
我有一些std::vector<uint8_t>
类型的数据。我想将其解释为字符串并对其进行子字符串检查。
可以通过将其转换为std::string
来实现,这将导致数据复制。是否可能以某种方式将其转换为std::string_view
并在其上搜索以避免复制它。
char
是 8 位 (大多数系统都是这样),那么您可以简单地将 vector
的数据重新解释为 char*
,然后从中创建一个视图,例如:std::vector<uint8_t> data;
...
std::string_view sv(reinterpret_cast<char*>(data.data()), data.size());
std::basic_string_view<uint8_t> sv(data.data(), data.size())
可以工作吗? - Mooing Duckchar
是signed
还是unsigned
。 - François Andrieux<std::uint8_t>
。 - undefined
std::vector
,而是必须使用std::string
吗? - user4581301string_view
,但是由于您可以从vector
获取底层指针,所以您可能只需使用string_view view((const char*)v.data());
,但是...我不知道这是否正确。一些专家可能会发现其中的问题。 - Tasstd::vector<uint8_t>
更改为std::string
的情况下,是否可能。 - Ashotuint8_t
视图还是实际的char
视图? - Jarod42uint8_t
是char
的别名吗?你需要确切的std::string_view
吗?还是std::basic_string_view<uint8_t>
就足够了? - Caleth