这里我有一个代码:
cout << "Press Enter To Exit...";
cin.ignore();
该程序将执行并等待,直到您按 Enter 键,然后它才会退出。
现在看这段代码:
int m;
cin >> m;
cout << "Press Enter To Exit...";
cin.ignore();
这次在输入“m”中保存的数字后,程序将退出,而无需等待 cin.ignore 命令,该命令等待按 Enter 键。
我的意思是,如果您在 cin.ignore 之前使用 cin 命令,则 cin.ignore 命令将跳过。为什么?我应该做什么来修复它?
cin.ignore()
基本上清除内存中剩余的所有输入。在第一段代码中,您没有输入任何内容,因此它将没有任何内容需要清除,因此它会等待您输入一些内容。
在第二段代码中,您使用了>>
获取格式化输入但保留结束行字符的运算符'\n'
(当您按 ENTER 键时存储的那个)在输入缓冲区中徘徊。当您调用 cin.ignore() 时,它会完成工作并清除相同的缓冲区。因为它已经完成了他被调用的操作,所以只是让程序继续(在本例中直到结束)。记住cin.ignore()
如果您希望用户在程序继续使用之前输入某些内容,则用于清除输入缓冲区(保存输入的小块内存)cin.get()
.
您还应该知道这一点:
如果使用:
->cin<<
您应该稍后调用 cin.ignore() ,因为它不会消耗结束行字符 '\n' ,下次您要求输入时会消耗该字符,从而导致不需要的结果
比如程序不等待你输入任何内容。
->cin.get()
你不应该调用 cin.ignore() 因为它消耗了 '\n'
->getline(cin,yourstring)
(获取整个输入行,包括结束行字符)您也不应该使用 cin.ignore()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)