C ++使用带有\ 0的char数组的正则表达式并获得结果

时间:2014-10-07 21:06:44

标签: c++ regex

我想在二进制文件上使用正则表达式,该文件包含0个字节,这使我无法使用字符串。我正在使用char数组,我可以在char数组上使用正则表达式。

Buffer是映射到内存的文件的副本,read是总大小。这段代码有效,但现在我想从函数中获取结果。我该怎么做?

    if(std::regex_search(buffer, buffer + read, *params->pattern))
    {
        std::cout << "Found.";
    }

1 个答案:

答案 0 :(得分:0)

我没有对此进行测试,但它应该有效..

auto it = std::cregex_iterator(&buffer[0], &buffer[read], *params->pattern);

for (int i = 0; i < it->size(); ++i)
{
    const char* str = (*it)[i].str();
    size_t size = (*it)[i].length();

    std::cout.write(str, size);
}

我只在常规字符串上测试过这个..不是包含空字符的字符串。我不明白为什么它不应该工作,因为它确实返回一系列字符和所述序列的长度。