[英]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.