在C ++程序中识别空格字符

时间:2019-02-24 09:58:29

标签: c++

#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是用于空间的代码,但是当我在控制台上以“”输入空间时,它无法将“”识别为空间。

3 个答案:

答案 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可能更容易。)

其他问题

  1. 使用<iostream>代替<iostream.h><iostream.h>不是标准的C ++。
  2. 使用<cstdio> *代替<conio.h><conio.h>不是标准的C ++。
  3. 使用int main()代替void main()void main()不是标准的C ++。
  4. 使用缩进而不是左对齐。左对齐不太容易理解。
  5. 使用ch == ' '代替ch == 32ch == 32不可移植。
  6. 使用isupper(ch)代替ch >= 65 && ch <= 90ch >= 65 && ch <= 90不可移植。
  7. 使用islower(ch)代替ch >= 97 && ch <= 122ch >= 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();
}