C++小程序中的一个小疑点

C++小程序中的一个小问题
本帖最后由 wang0921zheng 于 2013-06-06 09:35:07 编辑
输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数

代码如下:

#include <iostream>
using namespace std;
int main()
{       
        char M;
int letters=0,empty=0,numbers=0,others=0;
cout<<"Enter one line::";
cin>>M;
while((M=getchar())!='\n')
{
if(M>='a'&&M<='z'||M>='A'&&M<='Z')
letters++;
else
if(M==' ')
empty++;
else
if(M>='0'&&M<='9')
numbers++;
else
others++;
}
cout<<letters<<" "<<empty<<" "<<numbers<<" "<<others<<endl;
return 0;
}
代码中红色加粗的部分有问题:如果我写cin>>M,就会出现错误,具体表现为第一个字符,结果直接忽略该字符;如果我不写cin>>M,就没有问题;我想问一下,为什么会出现这样的问题,是字符串的问题?还是别的问题? 求详细解释,谢谢各位大侠了!!!
C++ 基础知识

------解决方案--------------------
因为你的cin>>M;
后面紧接着就是
while((M=getchar())!='\n')
这样子就相当于接收了第一个字符存入M,但又用M=getchar()再次接收了第二个字符存入M,而第一个字符就被覆盖浪费掉了