这个问题怎么解决。。。
各位老师,我不想让字符串最后出现空格。
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s="names name nam name ";//求单词name在字符串中的个数,字符串最后不加空格就不能比较最后一个单词
int w=s.length();
int k,m=0,j=0,t=0;
char b[20]="name";
int n=strlen(b);
char a[20];
for(int i=0;i<w;i++)
{
if(s[i]!=' ')
{
a[j]=s[i];
j++;
}
else
{
for(k=0;k<j;k++)
{
if(a[k]==b[k])
m++;
else
{
m=0;
break;
}
}
if(m==n) t++;
m=0;
j=0;
}
}
cout<<t<<endl;//问题在于最后一个单词<w,直接跳出for 循环,没有比较最后一个单词。
return 0;
}
[解决办法]
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main()
{
string s="names name nam name";
int w=s.length();
int k,m=0,j=0,t=0;
char b[20]="name";
int n=strlen(b);
char a[20];
for(int i = 0;i < w;i++)
{
if(s[i] == ' ' || i == w-1)
{
if (i == w-1) {
a[j] = s[i];
j++;
}
for(k=0;k<j;k++)
{
if(a[k]==b[k])
m++;
else
{
m=0;
break;
}
}
if(m==n) t++;
m=0;
j=0;
}
else
{
a[j]=s[i];
j++;
}
}
cout<< t <<endl;
return 0;
}
[解决办法]
for(int i=0;i<=w;i++) //j<=w { if(i != w && s[i]!=' ') //再添加个条件判断最后一个单词完成 { a[j]=s[i]; j++; }