如何在 string字符串中查找一个特定的字符串

jesse_apple 2007-08-07 10:42:06
例如:查找 maxlength=100><script>document.f.wd.focus();g()</script><input type=hidden name=cl value=3> <input type=submit value=百度一下 class=sb><br><br></form></td><td width=100><a
中的<br>,并返回<br>的位置
...全文
1943 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jesse_apple 2007-08-07
  • 打赏
  • 举报
回复

又有问题了
怎么让他接着查找第2个<br>呢 find()找到一个就停止了
lockhall 2007-08-07
  • 打赏
  • 举报
回复
kmp算法

去找本數據結構看下吧。

就是字符串搜索的算法。。。
jesse_apple 2007-08-07
  • 打赏
  • 举报
回复
kmp bm 是什么?
mLee79 2007-08-07
  • 打赏
  • 举报
回复
搞个 kmp bm 啥的吧, 看起来比较帅 ...
jesse_apple 2007-08-07
  • 打赏
  • 举报
回复

int vFirstPlace;
string vStrBuf = "maxlength=100><script>document.f.wd.focus();g()</script><input type=hidden name=cl value=3> <input type=submit value=百度一下 class=sb><br><br></form></td><td width=100><a
";
vFirstPlace = vStrBuf.find("<br>");

先这样做吧
lockhall 2007-08-07
  • 打赏
  • 举报
回复
或者先用c_str轉換成c的字符串。

用strstr()查找。
taodm 2007-08-07
  • 打赏
  • 举报
回复
楼主啊,你到底有没有认真看msdn啊?
jesse_apple 2007-08-07
  • 打赏
  • 举报
回复
find只是查找单个字符的呀
hoya5121 2007-08-07
  • 打赏
  • 举报
回复
string s;
s = "abdsaletgtfdlkgh343ojgsldfjk0o3";
SIZE_T n = s.find("sale");

ASSERT(n == 3)
taodm 2007-08-07
  • 打赏
  • 举报
回复
用find成员函数呀。
你还是装个msdn查查string吧。
cppgp 2007-08-07
  • 打赏
  • 举报
回复
用 find()可以, STL的string提供七种参数形式的find(),如果你可以确定你要查找的字符串靠后或者同时有多个子字符串符合,应该使用rfind()系列或者find_last_of()系列函数来查找,STL的string提供了100个以上的操作函数,,,闲话少说,,给你五个find()函数原型及简单说明:
(1)size_type string::find(char c) const;
(2)size_type string::find(char c,size_type idx) const;
(3)size_type string::find(const string& str) const;
(4)size_type string::find(const string& str,size_type idx) const;
(5)size_type string::find(const char* cstr) const;
(6)size_type string::find(const char* cstr,size_type idx) const;
(7)size_type string::find(const char* cstr,size_type idx,size_type chars_len) const;
说明:
1>.以上函数如果查找失败返回string::npos,如果成功:
函数(1)返回从头开始的第一个字符所在位置
函数(2)返回从idx开始的第一个字符所在位置
函数(3)返回从头开始的第一个子字符串所在位置
函数(4)返回从idx开始的第一个子字符串所在位置
函数(5)返回从头开始的与char*串相等的第一个子串所在位置
函数(6)返回从idx开始的与char*串相等的第一个子串所在位置
函数(7)返回从idx开始的与char*串前chars_len个字符相等的第一个子串所在位置
lz的问题可以采用好多方案:比如

std::string strSrc("maxlength=100><script>document.f.wd.focus();g()</script><input type=hidden name=cl value=3> <input type=submit value=百度一下 class=sb><br/><br/></form></td><td width=100><a
");
std::string::size_type idx = strSrc.find("<br/>");
if( std::string::npos != idx )
{
//查找成功,加入处理步骤
}
else
{
//没有找到时的处理
}
jesse_apple 2007-08-07
  • 打赏
  • 举报
回复
while(!vStrBuf.eof()) // 查找<br>开始的位置
{
getline(vStrBuf, vStr2, '\n');
vFirstPlace = vStr2.find("<br>");
while(true)
{
vFirstPlace = vStr2.find("<br>", vFirstPlace);
if(string::npos == vFirstPlace)
break;
vFirstPlace++;
cout << vFirstPlace << "\n";
}
}
达到所要的结果了 开始给分了
icy_heart 2007-08-07
  • 打赏
  • 举报
回复
while(true)
{
pos = s.find("<br/>",pos);
if(string::npos == pos)
break;
pos++;
}

64,676

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧