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'的主要内容,如果未能解决你的问题,请参考以下文章

c++利用cin.get()输入带空格的一串数据【追加悬赏】

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

2018华为上机测试第二批

c++小白求助!用sort对vector排序的问题

cin.get ()的用法:

为啥不能用scanf读入一个含有空格的字符串