C++中cin和cin.getline函数连用的问题

C++中cin和cin.getline函数连用的问题

测试环境:VS2013

语言:C/C++


代码如下:

#include 
int main()
{
         usingnamespace std;
         charname[16], school[50];
         cout<< "请输入您的姓名:" << endl;
         cin>> name;
         cout<< "请输入您的学校:" << endl;
         cin.getline(school,50);
         cout<< "你的名字是:" << name << endl;
         cout<< "你的学校是:" << school << endl;
         system("pause");
         return0;
}

问题:

在执行时,为什么会自动跳过school的输入?

还有,为什么我输入name:“Xiao Ming”,就会显示:

你的名字是:Xiao

你的学校是: Ming


原因:

cin>>name;

这句在输入Xiao Ming时遇空格,xiao被输入name, 

而Ming留在键盘缓冲区中,被cin.getline(school, 50);捕获。

 

而如果输入 XiaoMing,中间无空格,则会出现

Name为XiaoMing, 回车被school捕获。

而school为空。

 

解决:

所以应该改为:

cin.getline(name,16);// >> name; 
cout << "请输入您的学校:" << endl; 
cin.get();    //去掉输入name后的回车符
cin.getline(school, 50);




 

你可能感兴趣的:(C/C++,cin,cin.getline)