C 帮助(ISO C 禁止指针和整数之间的比较.)
C++ Help (ISO C++ forbids comparison between pointer and integer.)
我正在尝试制作一个带有堆栈的非常简单的程序,但是当我尝试运行它时,我似乎会遇到错误。该错误显示" 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"
。
相关文章:
- 禁止指针和整数之间的比较C++
- ISO C++禁止指针和整数 [-fpermissive] [c++] 之间的比较
- 比较它们之间的元素并获取公共值的键
- 零点和布尔值之间的比较
- 我的 c++ 程序似乎没有发现字符串和我拥有但输入使用 getline 的变量之间的比较
- C++ - 负数和正数之间的比较返回 false
- Qt 错误 iso c++ 禁止指针和整数之间的比较 -permissive
- C++模板参数之间的比较似乎被忽略了
- 为什么C++容器之间存在比较运算符
- 错误:ISO C++禁止在指针和整数 [-fallowive] 之间进行比较
- 数字之间的比较
- C++ - 比较模板和类之间的数据类型
- 获取字符串大小的各种方法之间的比较
- 比较器的两个实现之间的差异
- 如何修复C++中的"指针和整数之间的比较"错误?
- 不同指针类型之间的无效比较:'type*' 和 'type&(*)()'
- 符号和未签名整数表达式之间的比较,以进行循环误差
- 比较C 中移动和智能指针之间的习惯
- 消除有符号和无符号整数表达式之间比较的优雅方式
- 无法理解浮点数和对象实例化之间比较的原因