【问题】
不知道为什么我的代码中间出现的str2无法计算在内,求大神帮找代码问题:
【代码如下】
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main(){
string str1 = "";
string str2 = "";
cout << "请输入第一个较长字符串:" << endl;
getline(cin, str1);
cout << "请输入第二个子字符串:" << endl;
getline(cin, str2);
//cout << str1 << endl;
//cout << str2 << endl;
int length1 = str1.length();
int length2 = str2.length();
//cout << length1 << " " << length2 << endl;
int count = 0; // 计数
// 遍历较长字符串
for(int i = 0; i < length1 - 1;i++){
// 先找到首字符相同位置
if (str2[0] == str1[i]){
// 应该先判断后续长度是否足够
if ((i + length2 - 1) <= length1 - 1){
// 注意切片取前不取后
if (str1.substr(i,i + length2) == str2){
count += 1;
// 修改下标,注意最后一段恰好相同的情况
if ((i + length2 - 1) == length1 - 1){
i = length1 - 1;
}
else{
i = i + length2;
}
}
}
}
}
cout << "出现次数为:" << count << endl;
return 0;
}