牛刀小试 - 计算字符串中子串出现的次数

/*********************************************************************
程序名: 实例:96 计算字符串中子串出现的次数 。
说明:1. 转string 用find() 函数
     2.  双循环
*********************************************************************/
#include 
using namespace std;

void FindCharByString()
{
	char s[100];
	char sub[100];

	cout << "请输入两个字符串,以回车隔开,母串在前,子串在后:" << endl;
	cin.getline(s, sizeof(s));
	cin.getline(sub, sizeof(sub));
	
	int count = 0;
	// 首先将字符数组转化为字符串str1和str2。
	string str1(s);	
	string str2(sub);
	int i = 0;
	//从str1下标i开始查找str2,如果找得到,计数加1,并且i从找到的位置,后移一位
	while (str1.find(str2,i)!= -1) 
	{
		count++;
		i = str1.find(str2, i) + 1;
	}
	cout << count << endl;
}

void FindCharByFor()
{
	char s[100];
	char sub[100];

	cout << "请输入两个字符串,以回车隔开,母串在前,子串在后:" << endl;
	cin.getline(s, sizeof(s));
	cin.getline(sub, sizeof(sub));
	int count = 0;

	for (int i = 0; s[i] != '\0'; i++)
	{
		bool flag = true;
		for (int j = 0; sub[j] != '\0'; j++)
		{
			if (s[i + j] != '\0' && s[i + j] == sub[j])
			{
				continue;
			}
			else
			{
				flag = false;
				break;
			}
		}
		if (flag)
			count++;
	}
	cout << count << endl;
}
int main() {
	// FindCharByString();
	FindCharByFor();
	system("PAUSE");
	return 0;
}

你可能感兴趣的:(C++学习,c++)