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

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




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值