错误:不能将指针与整数进行比较

Error: cannot compare a pointer to integer?

本文关键字:整数 比较 指针 不能 错误      更新时间:2023-10-16

这是一个查找字符串中最长单词的程序,但是我有一个问题。编译器说,我不能比较一个指针到整数!但是我比较了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;
}

*a在这里是一个char,所以您应该使用==将其与另一个char(而不是类型为const char *的字符串文字)进行比较。

你需要修改

if(*a==" ")

if(*a==' ')

我同意herohuyongao的回答。但我认为这只是对你错误的最小修正。这段代码仍然是"C风格"。在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;
}