我想在二进制文件上使用正则表达式,该文件包含0个字节,这使我无法使用字符串。我正在使用char数组,我可以在char数组上使用正则表达式。
Buffer是映射到内存的文件的副本,read是总大小。这段代码有效,但现在我想从函数中获取结果。我该怎么做?
if(std::regex_search(buffer, buffer + read, *params->pattern))
{
std::cout << "Found.";
}
答案 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);
}
我只在常规字符串上测试过这个..不是包含空字符的字符串。我不明白为什么它不应该工作,因为它确实返回一系列字符和所述序列的长度。