切换情况,用户输入,确定其是什么字符



我有一堆if语句。但是我想在开关中有一堆IF语句。我这样尝试:

// project_stringManipulation.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iomanip>
#include <iostream>
#include <cctype>
using namespace std;
int main()
{
    char input;
    cin >> input;
    switch (input)
    {
    case isalpha(input) :       
        cout << "That's an alphabetic character.n";
    default:
        break;
    }

    cout << "Enter any character: ";
    cin.get(input);
    cout << "The character you entered is: " << input << endl;
    cin.get();
    if (isalpha(input))
        cout << "That's an alphabetic character.n";
    cin.get();
    if (isdigit(input))
        cout << "That's a numeric digit.n";
    cin.get();
    if (islower(input))
        cout << "The letter you entered is lowercase.n";
    cin.get();
    if (isupper(input))
        cout << "The letter you entered is uppercase.n";
    cin.get();
    if (isspace(input))
        cout << "That's a whitespace character.n";
    cin.get();
    return 0;
}

,但是我将进入这条线:

case isalpha(input) :

以下错误:

Severity    Code    Description Project File    Line    Suppression State
Error (active)      expression must have a constant value   project_stringManipulation  d:Mijn DocumentsVisualStudio2015C++_ProgramsProgram_Niceproject_stringManipulationproject_stringManipulation.cpp  19  

如何以正确的方式进行操作?

谢谢

写作:

switch (input) {
    case {something}:
    break;
    ...
}

然后,对input评估something如:(input == something)。如果input确实等于something,则情况表达式为true,您的代码将执行。

问题在于,您将input评估为isalpha()的结果,即布尔值。

input = "a"。然后,isAlpha(input)将返回true

现在,您的案件说如果"a" == true为false,则执行执行,因此您的代码未执行。

如果您想将其构造为开关,则可以写出类似的内容:

switch (true) {
    case isalpha(input):
    //Do stuff
    break;
    ...
}

在评论中所述,案例语句必须是c 中的恒定值。

最新更新