社区
C++ 语言
帖子详情
求教``关于std::find的使用``
fdsjflfc33
2005-04-13 11:40:47
现有两个BYTE型的数组```一个是BYTE buf[10000]、BYTE srcbuf[],我要在buf里找和srcbuf匹配的数据的位置```请问该如何写?
...全文
1220
17
打赏
收藏
求教``关于std::find的使用``
现有两个BYTE型的数组```一个是BYTE buf[10000]、BYTE srcbuf[],我要在buf里找和srcbuf匹配的数据的位置```请问该如何写?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sunman1982
2005-04-14
打赏
举报
回复
strpbrk
fdsjflfc33
2005-04-14
打赏
举报
回复
明天早上7点来``
MadLee
2005-04-14
打赏
举报
回复
strstr
whyglinux
2005-04-14
打赏
举报
回复
根据BYTE类型的特点(unsigned char),这个数组BYTE buf[10000]其实就是一个字符数组,可以用类似string的方法进行处理。
typedef basic_string<BYTE> ustring; // 定义BYTE型的string
BYTE buf[10000];
BYTE srcbuf[];
// ...
ustring s(buf, buf + sizeof(buf)/sizeof(buf[0])); // 转换为ustring
然后就跟使用string一样可以使用find类搜索函数了。这类函数返回的就是位置。
whoho
2005-04-14
打赏
举报
回复
std::search(buf, buf+1000, strcbuf, strcbuf+len)就可以了,返回一个指针
whoho
2005-04-14
打赏
举报
回复
std::string::find_first_of的实现你可以自己去查看,算法还是比较好理解的
^^^^刚刚打错了
也是线性搜索,但进行N次,所以复杂度是O(N^N)
照你这里的说法,你应当是要模式匹配的算法才对,你可以先将BYTE数组转为string,然后
调用string::find就好了
tip9914
2005-04-14
打赏
举报
回复
其实最简单的就是用search()算法了^_^
查找某个子序列首次出现的地点
tip9914
2005-04-14
打赏
举报
回复
事的,没有使用KMP,很容易看懂
不过find_first_of事用来查找【first1,last1)区间中有【first2,last2)中任何一个元素第一次出现的位置,所以事不能实现搂住的目的的,
想查找部分匹配的话,或者自己写,或者用find_end,不过这个算法事用来查找序列2在序列1中最后出现的地点,所以可能也有些说不过去,如果序列1中只包含1个序列2的话事没有问题的
实在不行自己写了^_^
whoho
2005-04-14
打赏
举报
回复
std::string::find_first_of的实现你可以自己去查看,算法还是不太好理解的
whoho
2005-04-14
打赏
举报
回复
std::find只能匹配单个元素,其实只是一个简单的线性搜索,复杂度为O(n)
whoho
2005-04-14
打赏
举报
回复
想知道的话,自己去读源码不是更好?
fdsjflfc33
2005-04-14
打赏
举报
回复
是的`楼上的``我就是在猜``std::find是内部是不是用了kmp算法``如果是的话我直接拿来用`
zzqsc
2005-04-14
打赏
举报
回复
上面的代码可处理自截流中包含'\0'的问题
zzqsc
2005-04-14
打赏
举报
回复
时间复杂度为O(N!)的算法
//从长度为lsource的source字节流中查找出序列为长度为lcmp的cmp字节流
byte * serachbyte(register byte * source,register int lsource,register byte * cmp,register int lcmp)
{
for(int i=0;i<lsource&&(lsource-i>=lcmp);i++)
{
register byte * temp=source+i;
if(memcmp(temp,cmp,lcmp)==0)//相同
return temp;
}
return 0;
}
如果要求更快一点的话,要用模式匹配算法,太复杂
sunandmoon1314
2005-04-14
打赏
举报
回复
BYTE 就是 unsigned char 范围 0-255
而char则到了128之后就是负值
fdsjflfc33
2005-04-13
打赏
举报
回复
BYTE是一个无符号的char型``占8位`你上面的代码我应该怎样转?
xfxf521
2005-04-13
打赏
举报
回复
string line1="We";
string line2="weajshjdh";
string::size_type pos=0;
pos=line2.find_first_of(line1,pos);
好象在c++没听说过你所说的BYTE类型!!
JS获取当前完整的url地址以及参数的方法
javascript 获取当前 URL 参数的两种方法: //返回的是字符串形式的参数,例如:class_id=3&id=2& function getUrlArgStr(){ var q=location.search.substr(1); var qs=q.split('&'); var argStr=''; if(qs){
JS--获取当前域名、端口号、url、参数--方法/实例
本文用示例介绍如何
使用
JavaScript获取当前页面的这些数据:域名、端口号、Url、相对路径和参数、指定参数。
JS获取当前Url参数的方法
1. 代码: 比如当前的URL是http://jinling.veyd.cn/index.php/Goods/cateEdit?g_id=1 调用GetUrlPara() 获取到的是g_id=1 function GetUrlPara(){ var url = document.location.toString(); var arrUrl = url.split("?");...
JS获取当前页面 URL 参数方法(转)
转自:JS获取URL参数方法、js获取当前url中的参数、JS获取URL参数的4种方法总结 法一 const result = new URLSearchParams(this.props.location.search); const param = result.get('对应参数名'); 法二 let url= window.location.href; const URL = res...
php 获取当前url hash,利用JS获取当前页面网址及其它参数的方法
在网站的前台
使用
JS可以做很多的事情,比如利用JS获取当前网页的网址,参数,锚点,通讯协议等等。那么这篇文章就简单的说一下,利用 javascript获取当前网页网址中部份信息的方法。URL网址的构成利用js获取或操作url之前,要先了解一个网址的组成部份,如以下格式scheme://host:port/path?query#fragmentscheme:通信协议 常用的http,ftp,ma...
C++ 语言
65,213
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章