我的几行代码,为何不能从getchar()读入字符呢?真是怪了,错在哪里呢?
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
char c1,c2;
int a;
float b;
cin >> c1 ;
cin >> c2 ;
cin >> a ;
cin >> b; cout << c1 << ' '
<< c2 << ' '
<< a  << ' '
<< b << endl;
//getch();
c1=getchar();
cout << "c1=" << c1 << endl;
getch();
return 0;
}

解决方案 »

  1.   

    加上
    cin.ignore();
    就行了,但是我不明白。为什么呢?
      

  2.   

    getchar()是在输入缓冲区顺序读入一个字符(包括空格、回车和Tab)。
      

  3.   

    cin.ignore(a,ch)方法是从输入流(cin)中提取字符,提取的字符被忽略(ignore),不被使用。每抛弃一个字符,它都要计数和比较字符:如果计数值达到a或者被抛弃的字符是ch,则cin.ignore()函数执行终止;否则,它继续等待。它的一个常用功能就是用来清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响。比如可以这么用:cin.ignore(1024,'\n'),通常把第一个参数设置得足够大,这样实际上总是只有第二个参数'\n'起作用,所以这一句就是把回车(包括回车)之前的所以字符从输入缓冲(流)中清除出去。你不给参数,则默认参数为cin.ignore(1,EOF),即把EOF前的1个字符清掉,没有遇到EOF就清掉一个字符然后结束,就是这样啊,所以就少一个回车(不可见滴)字符.