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

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

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

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

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

1.getline()

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

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

例如getline(name,20)

是将字符数目20的字符串输入到name数组中

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()内容是换行符,那么是正常读取结束,如果不是那就是空间不够导致的中断。

上一篇:数据结构:第四章学习小结


下一篇:getline()的使用注意