这是一个程序,用于查找字符串中最长的单词,但我有一个问题。编译器说我不能比较一个指向整数的指针!但是我将char指针与行中的char进行比较
#include <string.h>
#include <string>
#include <iostream>
using namespace std;
string longest(char * a)
{
int count=0;
int finalcount=0;
string longs="";
string longest;
int lena=strlen(a);
for(int i=0;i<lena;i++)
{
if(*a==" ")
{
if(count>=finalcount)
{
finalcount=count;
longest=longs;
}
count=0;
longs="";
}
else{*a++;count++;longs+=*a;}
}
return longest;
}
int main()
{
char a[]="which is the longest";
cout<<longest(a);
return 0;
}
答案 0 :(得分:7)
*a
此处为char
,因此您应该使用{{char
将其与另一个const char *
(而不是类型为==
的{{3}})进行比较1}}。
您需要更改
if(*a==" ")
到
if(*a==' ')
答案 1 :(得分:0)
我同意herohuyongao的回答。但我认为这只是对您的错误的最小修复。这段代码仍然是&#34; C风格&#34;。在C ++中,您应该更喜欢std::string
到char *
所以你的代码应该是这样的:
#include <string>
#include <iostream>
using namespace std;
string longest(string a) {
int count = 0;
int finalcount = 0;
string longs = "";
string longest;
int lena = a.length();
for (int i = 0; i < lena; i++) {
char c = a[i];
if (c == ' ') {
if (count >= finalcount) {
finalcount = count;
longest = longs;
}
count = 0;
longs = "";
} else {
count++;
longs += c;
}
}
if (count >= finalcount) {
finalcount = count;
longest = longs;
}
return longest;
}
int main() {
string a = "which is the longest";
cout << longest(a);
return 0;
}