我有一个 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解决方案。我应该如何使用它?
您需要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)