【发布时间】:2019-05-02 13:40:17
【问题描述】:
我正在尝试使用“if”语句将用户输入的单词(黑色、红色、绿色、蓝色)转换为整数(1、2、3、4)。编程很新,所以欢迎任何解释。下面的代码告诉我“与字符串文字比较会导致未指定的行为”,并且总是使用“else”因素,给我 4。
变量声明:
int calccol = 0;
char usercol[5];
用户输入颜色选择:
std::cout << "Pick a color: " ;
std::cout << "\n Black \n Red \n Green \n Blue \nYour color choice: " ;
std::cin >> usercol ;
if 语句失败:
if (usercol == "black") {
calccol = calccol + 1;
} else if (usercol == "red") {
calccol = calccol + 2;
} else if (usercol == "green"){
calccol = calccol + 3;
} else {
calccol = calccol + 4;
} ;
std::cout << calccol ;
当用户输入单词“green”时,我希望 calccol 的值例如为 3。
【问题讨论】:
-
char usercol[5];没有足够的空间来存储五个字母 和 一个空终止符。此外,比较char*和==不会比较它们所指向的字符串的值。它只是检查它们是否指向相同的地址(在这种情况下它们不会)。 -
stackoverflow.com/questions/30674309/… 的部分副本我正在寻找另一个解决缓冲区太小的问题。
-
你收到a good C++ book了吗?这是绝对必要的。
标签: c++ string string-comparison