我有一堆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 中的恒定值。