我正在尝试使用堆栈创建一个非常简单的程序,但是当我尝试运行它时,我似乎遇到了错误。错误说“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--;
}
答案 0 :(得分:3)
quest
是char
,但"y"
是字符串文字,类型为const char[2]
。当您尝试将这些与quest == "y"
进行比较时,字符串文字将转换为指向其第一个元素的指针,因此您尝试将char
与指针进行比较。那是错误告诉你的。
您需要类似'y'
的字符文字,而不是字符串文字,其类型为char
。
答案 1 :(得分:0)
quest
属于char类型,因此它是单个字符,您尝试将其与字符串文字(如"y"
)进行比较。对char字面值使用单引号:'y'
。
答案 2 :(得分:-1)
由于您正在编写C ++代码,因此应使用string
类而不是"y"
。