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

举报
陈沧夜 发表于 2022/05/01 00:45:33 2022/05/01
【摘要】 cin, getline() 与 get() 的区别 由于cin使用空白(空格,制表符,换行符)来确定字符串结束位置 所以我们在面对一些有包含空格的字符串输入时,cin就无能为力 我们可以使用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)

  
 
  • 1
  • 2
  • 3

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

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

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

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

文章来源: blog.csdn.net,作者:沧夜2021,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/CANGYE0504/article/details/104604924

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。