我需要显示最后一个单词在字符串中出现的次数



例如,如果我有"狗猫人车人房子人",单词"人";出现了3次,所以程序应该显示3。我试过:

char s[51],*p,sep[]=" ,.",s1[21];
int nr=51,k=1;
cin.get(s,51);
p=strtok(s,sep);
while(p)
{
nr--;
if (nr==1) strcpy(s1,p);
else
if(strcmp(s1,p)==0) k++;
p=strtok(NULL,sep);
}
cout<<k;

我解决了一个类似的问题,但我必须显示第一个单词在字符串中出现的次数,所以我认为这应该是一样的,只是做了一些小的改变,但这段代码似乎不起作用。我做错了什么?或者我应该改变什么?

记录下每个单词的计数,并记住最后一个单词的计数。

#include <iostream>
#include <map>
#include <string>
using std::cin;
using std::cout;
using std::map;
using std::string;
int main() {
string word;
auto last_tally = 0;
map<string, int> word_tally;
while (cin >> word) {
last_tally = ++word_tally[word];
}
cout << last_tally << "n";
}

相关内容

  • 没有找到相关文章

最新更新