错误:无法比较指向整数的指针?

时间:2014-03-15 07:22:28

标签: c++ pointers char

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

2 个答案:

答案 0 :(得分:7)

*a此处为char,因此您应该使用{{char将其与另一个const char *(而不是类型为==的{​​{3}})进行比较1}}。

您需要更改

if(*a==" ")

if(*a==' ')

答案 1 :(得分:0)

我同意herohuyongao的回答。但我认为这只是对您的错误的最小修复。这段代码仍然是&#34; C风格&#34;。在C ++中,您应该更喜欢std::stringchar *

所以你的代码应该是这样的:

#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;
}