#include<iostream.h>
#include<conio.h>
void main()
{
char ch;
cout<<"Enter a character:";
cin>>ch;
if(ch==32)
cout<<"space";
else if(ch>=65 && ch<=90)
cout<<"upper case letter";
else if(ch>=97 && ch<=122)
cout<<"lower case letter";
else
cout<<"special character entered";
getch();
}
我需要检查输入的字符是小写还是大写字母,特殊字符,数字或空格字符。 32是用于空间的代码,但是当我在控制台上以“”输入空间时,它无法将“”识别为空间。
答案 0 :(得分:3)
默认情况下会忽略空格,请使用noskipws
#include<iostream>
using namespace std;
int main()
{
char ch;
cout<<"Enter a character:";
cin>>noskipws>>ch;
if(ch==32)
cout<<"space";
else if(ch>=65 && ch<=90)
cout<<"upper case letter";
else if(ch>=97 && ch<=122)
cout<<"lower case letter";
else
cout<<"special character entered";
getchar();
return 0;
}
此外,如果要在空格中添加''
,请记住只有第一个字符会被识别。
答案 1 :(得分:1)
cin >> ch
放弃空格(包括空格,\t
,\n
等)。正确的方法是使用get(ch)
:
cin.get(ch);
({noskipws
是@Samuel的答案中提到的另一个选项,但是对于单个字符,get
可能更容易。)
<iostream>
代替<iostream.h>
。 <iostream.h>
不是标准的C ++。<cstdio>
*代替<conio.h>
。 <conio.h>
不是标准的C ++。int main()
代替void main()
。 void main()
不是标准的C ++。ch == ' '
代替ch == 32
。 ch == 32
不可移植。isupper(ch)
代替ch >= 65 && ch <= 90
。 ch >= 65 && ch <= 90
不可移植。islower(ch)
代替ch >= 97 && ch <= 122
。 ch >= 97 && ch <= 122
不可移植。固定代码:
#include <iostream>
#include <cctype>
int main()
{
char ch;
std::cout << "Enter a character:";
std::cin.get(ch);
if (ch == ' ')
std::cout << "space";
else if (std::isupper(ch))
std::cout << "upper case letter";
else if (std::islower(ch))
std::cout << "lower case letter";
else
std::cout << "special character entered";
// std::cin >> ch; // only if you really demand it
}
*在这种情况下,甚至不应使用<cstdio>
。如果确实要保持窗口打开,请使用getchar()
或std::cin >> ch
而不是getch()
。更好的方法是在控制台中调用它。
答案 2 :(得分:-2)
使用字符本身代替其代码。
#include<iostream.h>
#include<conio.h>
void main()
{
char ch;
cout << "Enter a character:";
cin >> ch;
if (ch == ' ')
cout << "space";
else if (ch >= 'A' && ch <= 'Z')
cout << "upper case letter";
else if(ch >= 'a' && ch <= 'z')
cout << "lower case letter";
else
cout << "special character entered";
getch();
}