请帮助我了解如何使用 std::search
获取二进制文件中所有出现的 {0x00, 0x00, 0x00, 0x01}。
下面的代码找到第一个匹配项:
std::string NAL = "\x00\x00\x00\x01";
std::ifstream source("somedata.dat", std::ios::binary);
std::istream_iterator<unsigned char> begin(source), end, currNAL;
currNAL = std::search(begin, end, NAL.begin(), NAL.end());
我不明白如何在 while 循环中使用 std::search
。
最佳答案
由于 std::search() 返回第一次出现的迭代器,您可以只使用第一次出现作为您的(非包含)起点再次搜索。
while(currNAL != source.end()){
currNAL = std::search(++currNAL, end, NAL.begin(), NAL.end());
//Increment some counter here?
}
我应该指出,这是未经测试的代码,我并不是说这是针对您具体问题的精确解决方案,只是为了演示这个想法。
关于c++ - 查找二进制文件中所有出现的字节序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57894396/