Code Bye

关于string类的问题

怎么样在一个string类中获取相同的子字符串出现的次数以及位置?
解决方案

2

“相同的子字符串”是什么意思啊?给定一个子串吗?那可以用字符串查找方法啊,有C语言风格的strstr,还有STL中的find_first_of,要不就本人实现,用暴力匹配、KMP、BM都可以

4

find能返回子字串的位置,循环调用以获得出现的总次数

8

http://en.cppreference.com/w/cpp/string/basic_string/find

4

并没有函数提供这个功能,要么本人写,要么find,rfind,find_first_of一个个查找
http://blog.csdn.net/cywosp/article/details/7280466

10

5

string类的函数没有提供这个功能,find只是可以找到第一次出现特定字符串时其的首字符索引
所以这个本人感觉你可以这样,找到一个字符串的位置之后把其改变,这样第二次调用find函数后
找到的是第二个的字符串所在位置!
http://blog.csdn.net/zycxnanwang/article/details/51728915

10

string buffer="123456789<lab>abcdefg<lab>123456";
	string s_lab="<lab>";
	int index=0;
	int n=0;
	cout<<"出现的位置";
	while ((n=buffer.find(s_lab,n+1))!=-1)			//buffer.find(s_lab,n+1)就是从n+1的位置开始找s_lab找到返回int
	{
		cout<<n<<"     ";
		index++;
	}
	cout<<"出现次数:"<<index<<endl;
	//出现的位置从0计算而不是从1

供参考

5

引用:

string类的函数没有提供这个功能,find只是可以找到第一次出现特定字符串时其的首字符索引
所以这个本人感觉你可以这样,找到一个字符串的位置之后把其改变,这样第二次调用find函数后
找到的是第二个的字符串所在位置!
http://blog.csdn.net/zycxnanwang/article/details/51728915

看过5楼链接吗?


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于string类的问题