我在尝试编译C ++代码时遇到了问题。由于我还在学习C ++,我仍然不了解大多数高级命令。我试图创建一个程序,询问用户的名字,姓氏,年龄和性别,并将其显示给用户。这是我的源代码:
#include <iostream>
int main ()
{
char firstName[20];
char lastName[20];
char age[6];
char gender[3];
int i = 0;
std::cout << "Please enter your full name: ";
std::cin.getline (firstName, 19, ' ');
std::cin.getline (lastName, 19);
std::cout << "Enter your age: ";
std::cin.getline (age, 5);
while (i != 1)
{
std::cout << "Enter your gender (m/f)";
std::cin.getline (gender, 2);
switch (gender)
{
case 'm':
std::cout << "\nHello Mr. ";
i++;
break;
case 'f':
std::cout << "\nHello Mrs. ";
i++;
break;
default:
std::cout << "\nThat is not even a gender!\n";
break;
}
}
std::cout << lastName << "!\n";
std::cout << "You are " << age << " years old.";
return 0;
}
当我尝试编译时,我的编译器给出了以下错误:
NameAgeQ.cpp: In function 'int main()':
NameAgeQ.cpp:24:15: error: switch quantity not an integer
我之前尝试使用'switch'语句编写其他程序,它可以处理字符。但是,在之前的计划中,我会将“性别”声明为“char gender;”而不是'char gender [];'。
为什么在这种特殊情况下'switch'语句不起作用?它不支持数组字符串吗?
答案 0 :(得分:4)
不,它没有。单char
是整数;数组不是。在你的情况下,这一行应该修复它:
switch (gender[0])
这意味着您正在使用数组中的第一个char
,现在又是一个整数类型。
答案 1 :(得分:1)
您将性别定义为三个字符的长数组,但您似乎应该将其定义为
char gender;
并用它来存储'm'或'f'。这样就可以像现在一样使用开关。
答案 2 :(得分:0)
尝试用开关中的gender
替换*gender
。现在发生的是你使用数组作为参数,尽管你只想使用第一个字母。
答案 3 :(得分:0)
原因是性别作为数组的名称是指向数组的第一个元素的指针来修复它你应该做什么 开关((*性别)) 或者如前所述 开关(性别[0])