搜索2个连续字符的内存块

时间:2012-03-11 14:03:17

标签: c++ c

我有一块内存,我需要搜索2个连续的字符。

我无法使用strstr,因为我的内存块可能包含' \ 0',而memchr只搜索单个字符。是否有一些类似于strstr的函数,适用于非null终止,或者我应该使用memchr,然后手动检查下一个元素。感谢。

2 个答案:

答案 0 :(得分:2)

for (p = memstart; p <= (memstart + memsize - stringsize); p++)
{
    if (memcmp(p, string, stringsize) == 0)
    return p; /* found */
}
return NULL; /* not found */

http://www.koders.com/c/fidD66F4C2F1935B0FF6158A83C4FBF134C4432F5CF.aspx

答案 1 :(得分:2)

C ++的方法是:

char* result = std::search_n( mem, mem + size, 2, c );

其中mem是缓冲区的开头,size是以字节为单位的大小,c是要搜索的字符。如果未找到匹配项,search_n应返回mem + size