【发布时间】:2020-05-10 08:10:26
【问题描述】:
嘿,我还在学习 C++,在编译这部分代码时遇到了麻烦。在进一步研究我正在为项目开发的文本游戏之前,我想知道为什么在尝试编译时会出现此错误,以便在开发时进行调试。
ISO C++ 禁止指针和整数之间的比较 [-fpermissive] if (answer1 == 'Yes' && answer1 == 'yes) {
我不确定我哪里出错了,因为代码将结果存储为“是”。 (我通过添加 std::cout >> answer1; 在收集用户 y/n 答案后进行检查。)
但是当我尝试使用 If 语句检查时,我得到了这个错误。
#include <iostream>
int main() {
char name[50];
char answer1[50];
std::cout << "Ahh... Welcome newcomer. What is your name?\n";
std::cin >> name;
std::cout << "You said your name was " << name << " correct?\n";
std::cin >> answer1;
// Let the game begin!
if (answer1 == 'Yes' && answer1 == 'yes') {
std::cout << "Lets get this game started then!\n";
}
else {
std::cout << "Then why are you even wasting my time?\n";
}
}
我知道这是基本的和初级的,但我仍在学习(也是自学的)。感谢阅读。
【问题讨论】:
-
为什么在 C++ 中使用 C 字符串?你真的应该使用字符串
-
附带说明,因为
name和answer1是char[]数组,std::cin >> name;和std::cin >> answer1;是等待发生的缓冲区溢出。使用std::setw()流操纵器来限制operator>>可以读入每个数组的字符数。或者使用std::cin.get(char*, std::streamsize)方法读入数组。或者,停止使用char[]数组并改用std::string。 -
@RemyLebeau 我想我会切换 std::string 直到我能完全理解你评论的另一半。谢谢你的建议。
标签: c++ pointers if-statement integer c-strings