代码
#include<iostream>
using namespace std;
int main()
{
struct Sum
{
char name[20];
int cnt;
}sum[3];
for(int i=0;i<3;i++)
fgets(sum[i].name,20,stdin);
string n;
while(getline(cin,n)!='\0')
{
for(int i=0;i<3;i++)
if(n==sum[i].name)
sum[i].cnt++;
}
for(int i=0;i<3;i++)
cout<<sum[i].name<<sum[i].cnt<<endl;
return 0;
}
std::getline()
返回的是std::cin
本身的引用,它不能和字符比较,但你可以这样写
while (getline(cin, n)) {
// ...
}
如果你遍历char数组,可以用判断是不是0作为跳出循环的条件,因为字符串以0结尾
但是getline函数是读取一行数据,它永远不会返回0呀
你问为什么这样,为什么那样之前,总要先问问它到底是什么样