2012-03-11 33 views
0

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

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

+2

你想要一个C解决方案还是一个C++解决方案? – 2012-03-11 14:06:06

+2

GNU C库有一个名为'memmem'的非标准扩展来完成。 – 2012-03-11 14:08:48

+2

http://stackoverflow.com/questions/3280553/memmem-stl-way – 2012-03-11 14:11:46

回答

2

C++的方式做,这将是:

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

哪里mem是你的缓冲区的开始,size是以字节为单位的大小,c是字符搜索。如果找不到匹配,search_n应该返回mem + size