判断某个字符串中是否含有某个字符串

sayyoume8220202 2011-03-02 10:56:10
有一个字符串

std::string str = "abdffdf.pdf";

问题1:如何判断这个字符串中 是否含有 .pdf




问题2
std::string str1 = "abcdecdaggcdegg.cdag";
如何判断这个字符串中是否含有cd cd出现了几次?
...全文
704 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
一根烂笔头 2011-03-04
  • 打赏
  • 举报
回复
数据结构里面有这个匹配算法!
sayyoume8220202 2011-03-04
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 wei801516 的回复:]
C/C++ code


#include <iostream>
#include <string>

using namespace std;

int main()
{
string s = "afdsafsdfda";
char *pStr = "af";

int pos = 0;
int n = 0;
while (t……
[/Quote]
哈哈 谢谢。。
sayyoume8220202 2011-03-04
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 zhanghulin 的回复:]
STL加上string的操作函数。可以解决你的问题,先查查MSDN,不要一遇见问题就找CSDN,不然技术提高的会很慢。嘿嘿,过来人,给点小建议,希望不要有意见。
[/Quote]
呵呵 谢谢指点。。
qq120848369 2011-03-02
  • 打赏
  • 举报
回复
你连个嵌套循环都不会写的话,还有什么可以说的.
sayyoume8220202 2011-03-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wei801516 的回复:]

SLT泛型算法可以帮你解决这个问题。。。建议去看看c++primer第十一章第一小节
[/Quote]
谢谢 有时间我去看看
sayyoume8220202 2011-03-02
  • 打赏
  • 举报
回复
或者说
怎么查找这个字符串最后四位字符串是否 .csv
wei801516 2011-03-02
  • 打赏
  • 举报
回复
写错了。。。。stl
wei801516 2011-03-02
  • 打赏
  • 举报
回复
SLT泛型算法可以帮你解决这个问题。。。建议去看看c++primer第十一章第一小节
wei801516 2011-03-02
  • 打赏
  • 举报
回复
#include <algorithm>
yuyan_linger 2011-03-02
  • 打赏
  • 举报
回复
string str = "abdffdf.pdf";
cout<<str.find("pdf");
返回下标
  • 打赏
  • 举报
回复
string里面有这个功能,具体看看源码
sayyoume8220202 2011-03-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 pengzhixi 的回复:]
size_t find ( const char* s, size_t pos = 0 ) const;
size_t find ( const string& str, size_t pos = 0 ) const;
[/Quote]

具体代码能不能给了小实例
rwjlqn 2011-03-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 pengzhixi 的回复:]
size_t find ( const char* s, size_t pos = 0 ) const;
size_t find ( const string& str, size_t pos = 0 ) const;
[/Quote]

正解~
pengzhixi 2011-03-02
  • 打赏
  • 举报
回复
size_t find ( const char* s, size_t pos = 0 ) const;
size_t find ( const string& str, size_t pos = 0 ) const;
justkk 2011-03-02
  • 打赏
  • 举报
回复
可以用strstr()来判断是否存在
存在时,可以跳过第一个找到的"cd",继续查找,以统计次数
大头猫 2011-03-02
  • 打赏
  • 举报
回复
对了c++不是很多容器吗,用vector容器把这段字符输进去,输出最后是个,比较下就行了。c++primer就有说,不过他厚了点
大头猫 2011-03-02
  • 打赏
  • 举报
回复
这个容易,建立个栈,将字符存进去,然后退栈,看看是否符合fdp. s
CJBAAA 2011-03-02
  • 打赏
  • 举报
回复
你的第二个问题那就简单了直接对第一进行调用就可以了,只要返回的不是NULL你就可以进行加加只要返回NULL就代表已经没有相等的了就结束了
wei801516 2011-03-02
  • 打赏
  • 举报
回复
哦 对了 如果按照msdn上的 while判断里面可以写成 while (pos != string::npos)
CJBAAA 2011-03-02
  • 打赏
  • 举报
回复
strstr源码你看看

char * __cdecl strstr (
const char * str1,
const char * str2
)
{
char *cp = (char *) str1;
char *s1, *s2;

if ( !*str2 )
return((char *)str1);

while (*cp)
{
s1 = cp;
s2 = (char *) str2;

while ( *s1 && *s2 && !(*s1-*s2) )
s1++, s2++;

if (!*s2)
return(cp);

cp++;
}

return(NULL);

}
加载更多回复(8)

64,644

社区成员

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

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