C++ regex_search 在 C 风格数组上进行匹配

ori*_*and 1 c++ regex c++17

我有一个 C 风格的数组(不一定以 null 结尾)。我想用正则表达式搜索它。我的代码如下:

const void* Search(const char* startAddress, const char* endAddress, std::regex *re)
{
    std::smatch match;
    auto ret = std::regex_search(startAddress, endAddress, *re);
Run Code Online (Sandbox Code Playgroud)

在目前的形式下,它工作得很好,但是我想知道它在哪里找到了那个特定的模式。一旦我将匹配添加为参数,编译器就无法找到合适的重载函数。我尝试在该区域之外创建一个string_view,但编译器也找不到任何适合这些迭代器的重载。

我正在专门寻找std::regex解决方案。我应该如何使用它?

Jar*_*d42 6

您需要std::cmatch(for const char*) 而不是std::smatch(for std::string)。

std::cmatch match;
auto ret = std::regex_search(startAddress, endAddress, match, *re);
Run Code Online (Sandbox Code Playgroud)

请参阅std::match_results