cin, getline() 与 get() 的区别

cin, getline() 与 get() 的区别

由于cin使用空白(空格,制表符,换行符)来确定字符串结束位置

所以我们在面对一些有包含空格的字符串输入时,cin就无能为力

我们可以使用getline()或者get()对字符串进行输入,但是这两者有什么区别呢?

1.getline()

getline()函数通过回车键输入的换行符来确定输入的结尾,并将换行符丢弃

这个函数有两个参数,一个是用来存储输入行的数组名称,一个是获取的字符数目。

例如getline(name,20)

是将字符数目20的字符串输入到name数组中
还有一个逆天的用法,getline(name,20,',')读到,号停止或者读取满20个

2.get()

get()的使用参数和getline()是相同的,但是get()并不丢弃换行符,会将其留在输入的队列中。

所以如果第二次使用get()时,由于换行符的存在,get()会误认为已经读取结束导致换行符后面的字符不能正确的输入

解决这种情况,我们可以使用一次get()读取换行符后,再使用get()读取后面的字符

例如对于abc def

我们可以

cin.get(a,20)
cin.get()//读取换行符
cin.get(b,20)

看这样子,好像getline()get()更简单?

不是的,这两个函数的出现是有着一定道理的。

get()getline()能够更仔细的分辨出字符串是因为空间填满停止读取,还是真正读取结束。

判断方法是接下来一行再使用一次get(),如果下一次的get()内容是换行符,那么是正常读取结束,如果不是那就是空间不够导致的中断。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈沧夜

打个赏,让我买瓶可乐喝呗~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值