如何检查char数组是否组合在一起以组成某些连续的char列表?

时间:2019-02-11 16:53:15

标签: c++ arrays char

例如,我的char数组可能类似于...

char array[8] = {0x00,0x07, 0x28, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x71}

,我要检查char [2]到char [7]是否等于'28 FF AF 00 00 00'十六进制, 我将如何以最简单的方式做到这一点?我知道我可以单独检查每个元素,但我想知道是否可以指定要在char [2]到char [7]范围内搜索十六进制28FFAF000000。

2 个答案:

答案 0 :(得分:3)

使用std::equal

mc.preschedule={T,F}

const bool equal = std::equal(array+2, array+8, "\x28\xff\xaf\x00\x00\x00"); 逐元素比较两个范围std::equal(start1, end1, start2)[start1, end1),其中选择了[start2, <end2>),以便两个范围具有相等的长度。

如果您确定只能使用字节,并且效率很重要,并且已检查编译器没有优化<end2>,则可以使用C-ism {{ 3}}:

std::equal

答案 1 :(得分:3)

您可能会做类似的事情:

constexpr char expected[] = {0x28, 0xFF, 0xAF, 0x00, 0x00, 0x00};

return std::equal(std::begin(expected), std::end(expected), array + 2);