C/C++|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++|C++中cin和cin.getline函数连用的问题】

    推荐阅读