我得到了一块内存,我需要搜索2个连续的字符。搜索2个连续字符的内存块
我不能使用strstr,因为我的内存块可能包含'\ 0',而memchr只搜索单个字符。是否有一些类似于strstr的函数,适用于非空终止,或者我应该使用memchr,然后手动检查下一个元素。谢谢。
我得到了一块内存,我需要搜索2个连续的字符。搜索2个连续字符的内存块
我不能使用strstr,因为我的内存块可能包含'\ 0',而memchr只搜索单个字符。是否有一些类似于strstr的函数,适用于非空终止,或者我应该使用memchr,然后手动检查下一个元素。谢谢。
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
C++的方式做,这将是:
char* result = std::search_n(mem, mem + size, 2, c);
哪里mem
是你的缓冲区的开始,size
是以字节为单位的大小,c
是字符搜索。如果找不到匹配,search_n应该返回mem + size
。
你想要一个C解决方案还是一个C++解决方案? – 2012-03-11 14:06:06
GNU C库有一个名为'memmem'的非标准扩展来完成。 – 2012-03-11 14:08:48
http://stackoverflow.com/questions/3280553/memmem-stl-way – 2012-03-11 14:11:46