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

来源:互联网 发布:originpro8数据平滑 编辑:程序博客网 时间:2024/05/22 14:41

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);




 

0 0
原创粉丝点击