C++中cin和cin.getline函数连用的问题
测试环境:VS2013
语言:C/C++
代码如下:
#include <iostream>
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);