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)
- 1
- 2
- 3
看这样子,好像getline()比get()更简单?
不是的,这两个函数的出现是有着一定道理的。
get()比getline()能够更仔细的分辨出字符串是因为空间填满停止读取,还是真正读取结束。
判断方法是接下来一行再使用一次get(),如果下一次的get()内容是换行符,那么是正常读取结束,如果不是那就是空间不够导致的中断。
文章来源: blog.csdn.net,作者:沧夜2021,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/CANGYE0504/article/details/104604924
- 点赞
- 收藏
- 关注作者
评论(0)