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

Posted mrcangye

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()内容是换行符,那么是正常读取结束,如果不是那就是空间不够导致的中断。

以上是关于cin, getline() 与 get() 的区别的主要内容,如果未能解决你的问题,请参考以下文章

cin.get(), cin.getline() , getline(cin,s) 三者的区别

get()与getline()

cin.get() 和 cin.getline() 之间的区别

3c++的getline与get

C++面向行输入:get()与getline()

使用 cin.getline() 和 cin.get()