如何使用C ++计算字符串中的某些单词

时间:2019-11-15 07:24:53

标签: c++ dev-c++

如何计算字符串中的相同单词

输入

字符串数

String1 = dadymathewdadreadad

String2 = sdgfghhjdjrjjyjjrtfdhe

搜索=爸爸

输出

字符串1中的爸爸数= 3

字符串2中的爸爸数= 0

代码:

#include <iostream>
#include <string.h>

using namespace std;
int main() {

    string str[50];
    int n;

    cin>>n;

    for(int i = 0; i < n;i++) {
        cin>>str[i];
    }

    for(int i = 0; i < 50;i++) {
        if(substr(i,4) == "dad"){
            n += 1;
        }

    }
    cout<<n;
    return 0;
}

错误

  

在函数'int main()'中:       [错误]未在此范围内声明“ substr”

3 个答案:

答案 0 :(得分:2)

您可以在此处使用的一个技巧是仅用空字符串替换搜索词(例如dad),然后比较替换前后的字符串长度。

string input = "dadymathewdadreadady";
string search = "dad";
int size_orig = input.size();
replace(string, search, "");
cout << "number of 'dad' is: " << (size_orig - input.size()) / search.size();

答案 1 :(得分:2)

您可以使用find()的{​​{1}}成员函数,在每次成功查找之后调整开始位置,直到字符串结尾:

std::string

答案 2 :(得分:0)

其他解决方案:

#include <iostream>
#include <string>
using namespace std;

int main(){
    int n; 
    string s[50];
    int c;
    cin>>n;
    for (int i=0;i<n;i++){
        cin>>s[i];
    }
    for (int i=0;i<n;i++) {
        c=0;
        int found=s[i].find("jack");
        while(found!=string::npos){
            found=s[i].find("jack",found+1);
            if(found) c++;
        }
        cout<<c<<endl;
    }
}
相关问题