C++之基础语法-cin.getline() 与 cin.get() 的区别,以及getline()函数使用方法
C++输入过程中,是把输入加载到缓冲区中,然后对缓冲区中的字符进行读取。cin,cin.get(),cin.getline()三个函数虽然都可以进行舒服读取,但是它们对缓冲区内的数据处理方法是不同的(如遇到【space】、【enter】的处理方法)。本文简单介绍cin,cin.get(),cin.getline()的基本用法,从根本上解释它们对缓冲区的数据处理方法。
1.cin的基本方法
结束条件:【enter】、【space】、【table】
cin的输入很简单,整体的看作是输入,当遇到【enter】、【space】、【table】时,就表示当前输入结束,下一个输入从非【enter】等开始,两输入之间无限多个【enter】等都是无效的。
2.cin.get()的基本用法
2.1 a=cin.get() 或者cin.get(a)
结束条件:输入字符足够厚回车
说明:这个是单字符的输入,用途是输入一个字符,将其ASCALL码存到a中
处理方法:与cin不同,cin.get()在缓冲区遇到【enter】等时,不会被舍弃,而是继续留在缓冲区中
2.2 cin.get(arrayname,size)把字符输入到arrayname中,长度不超过size
注释:arrayname必须是char[]类型,即char数组类型,不可以为string类型;size是指输入长度,即允许输入的最大长度。
处理方法:假设把数据输入到 char a[arraylength],数组长度为arraylength。
注意:前size-1有效,最后一个补‘\0’
综上:当吧大于数组长度的字符串放出char a[arraylength]中,系统自动扩张数组a的长度使a能放得下,但是这么做容易产生运行错误
2.3 cin.get(arrayname,size,s)
用法:cin.get(arrayname,size,s) 把数据输入到arrayname字符数组中,当到达长度size时结束或者遇到字符s时结束
注释:a必须是字符数组,即char a[]l类型,不可为string类型;size为最大的输入长度;s为控制,遇到s则当前输入结束缓存区里的s将被舍弃
3.cin.getline()基本用法
cin.getline()的用法和cin.get()用法大致相同,没有2.1用法,只有2.2参数,2.3参数两类
cin.gerline(arrayname,size)
cin.getline(arrayname,size,s)用法与cin.get()效果大致相同,但也有些区别
1)cin.getline(arrayname,size)与cin.get(arrayname,size)的区别
cin.get(arrayname,size)当遇到[enter]时会结束目前输入,他不会删除缓冲区中的[enter]
cin.getline(arrayname,size)当遇到[enter]时会结束当前输入,但是会删除缓冲区中的[enter]
2)cin.getline(arrayname,size,s)与cin.gei(arrayname,size,s)的区别
cin.getline(arrayname,size,s)当遇到s时会结束输入,并把s从缓冲区中删除
cin.get(arrayname,size,s)当遇到s时会结束输入,但不会删除缓冲区中的s