cin.get()!='n'
Posted dongxiangzhaofugui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cin.get()!='n'相关的知识,希望对你有一定的参考价值。
键盘敲入字符,都暂存才cin的缓冲里面,当发现回车键时,开始从缓冲读取数据。cin >> golf时,就是从缓冲读取数据到golf,golf是int型,当从缓冲读取到其它非数字字符时,意味着读取失败。失败就给cin.?flag?产生错误标志,当错误标志存在时,cin就不能工作了,必须先清除掉。所以有了cin.clear()
1.当错误发生是,缓冲中已经被读取的字符已然没了,余下的都是从错误字符往后的字符了(产生错误的字符也已经被读走了,否则怎么产生错误)。Enter是在最后的,当然还存在着。
cin.clear(),只清除了错误标记。
2.既然发生了错误,就干脆把缓冲清空,重新进行输入。
所以就使用cin.get()从缓冲读取字符,直到连回车一起读走。每读一个字符,缓冲里就少一个字符。
3. 控制台程序,光标始终在给用户进行输入的地方。与cin无关。
cin.get()取得输入的字符,如果这个字符不是换行符,那么返回值为1,执行continue,即回到while继续这么干,若执行遇到换行符,则退出整个while循环,这个换行符弃之不顾。那么这整个语句的作用,就是读取该行换行符前的所有字符。
以上是关于cin.get()!='n'的主要内容,如果未能解决你的问题,请参考以下文章