繁体   English   中英

Cin.Ignore()无法正常工作

[英]Cin.Ignore() is not working

这里有一个代码:

cout << "Press Enter To Exit...";
cin.ignore();

该程序将执行并等待您按Enter键,然后退出。 现在看到以下代码:

int m;
cin >> m;
cout << "Press Enter To Exit...";
cin.ignore();

这次输入要保存的数字“ m”后,程序将退出,而无需等待等待按enter键的cin.ignore命令。

我的意思是,如果您在cin.ignore之前使用cin命令,则cin.ignore命令将跳过。 为什么? 我应该如何解决?

cin.ignore()基本上清除了内存中剩余的所有输入。 在第一段代码中,您没有输入任何内容,因此没有任何内容需要清除,因此它等待您输入内容。 在第二段代码中,您使用了>>运算符,该运算符获取格式化的输入,但将结束行字符'\\n' (按ENTER键存储的字符)留在输入缓冲区中。 当您调用cin.ignore()时,它将完成工作并清除该缓冲区。由于已经执行了他所调用的操作,因此只是让程序继续运行(在本例中一直结束)。 如果您希望用户在程序继续使用cin.get()之前输入一些内容,请记住cin.ignore()用于清除输入缓冲区(保存输入的小内存cin.get()

您还应该知道这一点:

如果使用:

-> cin<<您之后应调用cin.ignore(),因为它不占用结尾行字符'\\ n',该行字符在您下次要求输入时会被占用,从而导致不需要的结果,例如程序未等待您输入任何东西。

-> cin.get()您不应调用cin.ignore(),因为它消耗了'\\ n'

-> getline(cin,yourstring) (获取包括结束行字符的整个输入行),您也不应使用cin.ignore()

采用

int m;
cin >> m;
cin.ignore();

cout << "Press Enter To Exit...";
cin.ignore();

当您使用cin >> m ,键入cin >> m值,然后按Enter,输入'\\n'进入buffer和cin.ignore(); 忽略它,程序结束。

用这个。

std::cin.sync(); std::cin.get();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM