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函数连用的问题】
推荐阅读
- c/c++|有感 Visual Studio 2015 RTM 简介 - 八年后回归 Dot Net,终于迎来了 Mvc 时代,盼走了 Web 窗体时代...
- C/C++|C/C++ basis 02
- Qt实战|Qt+OpenCV联合开发(二十一)--图像翻转与旋转
- Qt实战|Qt+OpenCV联合开发(十四)--图像感兴趣区域(ROI)的提取
- Qt实战|Qt+OpenCV联合开发(十三)--通道分离与合并
- opencv|Qt+OpenCV联合开发(十六)--图像几何形状绘制
- Qt实战|Qt+OpenCV联合开发(十七)--随机数与随机颜色
- SNAT的MASQUERADE地址选择与端口选择
- IPTABLES的连接跟踪与NAT分析
- IPVS分析