关于get()和getline()

#include<iostream>
using namespace std;
void main()
{
char c,a[50],s1[100];
cout<<"input your c:"<<endl;
while((c=cin.get())!='\n')
cout<<c<<" ";
cout<<endl;




cout<<"input your a[50] :"<<endl;
cin.get(a,5);


cout<<a<<endl;


cin.ignore(1);      //若没有,则下面的getline不能够从键盘读取char值




cout<<"use getline for getting s1[100] :"<<endl;     //只要a【50】输入5个以内,getline都能从键盘取字符,否则不会


cin.getline(s1,90);
cout<<s1<<endl;

}

原因分析:由于get()函数有些不安全,他遇到结束符以后,不会将 \n  从输入流删除,从而导致getline一开始就读取了 \n,直接结束了

只要cin.get(a,5);的输入char少于或者=5个时,通过cin.ignore(1); 将get()遗留的  \n删除,就可以读取数据了。

所以:getline和get效果差不多,但是getline()安全方便一点


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值