错误:开关数量不是整数 C++

Xar*_*xus 0 c++ string compiler-errors switch-statement

尝试编译我的 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;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译它时,我的编译器给了我以下错误:

NameAgeQ.cpp: In function 'int main()':
NameAgeQ.cpp:24:15: error: switch quantity not an integer
Run Code Online (Sandbox Code Playgroud)

我之前尝试过用“switch”语句编写另一个程序,它可以处理字符。但是,在之前的程序中,我会将“性别”声明为“字符性别”;而不是'字符性别[];'。

为什么在这种特殊情况下“switch”语句不起作用?它不支持数组字符串吗?

Dav*_*d M 5

不,它没有。单个char是整数;数组不是。在你的情况下,这条线应该修复它:

switch (gender[0])
Run Code Online (Sandbox Code Playgroud)

这意味着您正在使用char数组中的第一个,它现在又是一个整数类型。