C 帮助(ISO C 禁止指针和整数之间的比较.)

C++ Help (ISO C++ forbids comparison between pointer and integer.)

本文关键字:之间 比较 整数 指针 帮助 ISO 禁止      更新时间:2023-10-16

我正在尝试制作一个带有堆栈的非常简单的程序,但是当我尝试运行它时,我似乎会遇到错误。该错误显示" ISO C 禁止指针和整数之间的比较。"。任何帮助都非常感谢。

我的代码:

#include <iostream>
#include <string>
using namespace std;
const int maxstack = 5;
struct stacktype{
    string name[maxstack];
    int top;
};
void createstack(stacktype &stack);
void destroystack(stacktype &stack);
bool fullstack(stacktype stack);
void push(stacktype &stack, string &newelement);
bool emptystack(stacktype stack);
void pop(stacktype &stack, string &poppedelement);
int main(){
    stacktype stack;
    string newelement, poppedelement;
    char quest;
    createstack(stack);
    cout<<"Do you want to enter data? (y/n)";
    cin>>quest;
    while((quest == "y" || quest == "Y") && !(fullstack(stack))){ //I get the error on this line
        cout<<"Please enter name";
        cin>>newelement;
        push(stack, newelement);
        cout<<"Do you want to enter data? (y/n)";
        cin>>quest;
    }
    cout<<endl<<endl;
    while(!emptystack(stack)){
        pop(stack, poppedelement);
        cout<<poppedelement<<endl;
    }
    destroystack(stack);
    system("PAUSE");
    return 0;
}
void createstack(stacktype &stack){
    stack.top = -1;
}
void destroystack(stacktype &stack){
    stack.top = -1;;
}
bool fullstack(stacktype stack){
    if(stack.top == maxstack - 1){
        return true;
    }else{
        return false;
    }
}
void push(stacktype &stack, string &newelement){
    stack.top++;
    stack.name[stack.top] = newelement;
}
bool emptystack(stacktype stack){
    if(stack.top == -1){    
        return true;
    }else{
        return false;
    }
}
void pop(stacktype &stack, string &poppedelement){
    poppedelement = stack.name[stack.top];
    stack.top--;
}

quest是一个 char,但 "y"是字符串字面的 const char[2]。当您尝试将它们与quest == "y"进行比较时,字符串文字将转换为指向其第一个元素的指针,因此您正在尝试将char与指针进行比较。这就是错误告诉您的。

而不是字符串文字,您需要一个字符字面的字符,例如'y',它具有类型char

quest是char类型,因此它是单个字符,然后尝试将其与诸如 "y"之类的字符串文字进行比较。使用字符文字的单个引号:'y'

由于您正在编写C 代码,因此应使用string类而不是"y"