Malthael Asked: 2020-08-27 14:57:08 +0800 CST 2020-08-27 14:57:08 +0800 CST 2020-08-27 14:57:08 +0800 CST 它的用途是什么以及如何清理缓冲区? 772 我是编程新手,我正在研究数组和指针,但我遇到了缓冲区的问题,我想澄清两个疑问: 清除缓冲区有什么用? 缓冲区是如何清除的? 看到这个函数经常被使用cin.ignore()但是我真的不明白它是怎么使用的,如果可能的话,给我一些例子来了解它是如何以及何时使用的。 c++ 1 Answers Voted Best Answer rnrneverdies 2020-08-27T17:06:26+08:002020-08-27T17:06:26+08:00 假设您有一个应用程序,当事情发生时,它会询问用户问题...... int main() { std::cout << "Espere..." << std::endl; // aqui hace una (quiza larga) operacion y de repente pregunta std::cout << "Elija una opcion? [A,B,C]" << std::endl; std::cin >> opcion; // y sigue con la operacion en base a la opcion } 在这种情况下,清除输入缓冲区很重要,因为在等待期间,用户可能会无意中触摸键盘,并且这种意外触摸一直保留在缓冲区中,直到读取标准输入 (cin)。 这是一个设计决策,当您希望(多一点)确定这是用户有意识的决定,因此您不接受缓冲区中的数据。 所以在cin >> opcion你放之前cin.ignore(N),要从输入缓冲区中强制丢弃 N 个字节。 最后,我不确定是否有适用于所有平台的便携式解决方案,这是基础。还有其他更多 C++ 样式选项。 cin.clear(); cin.ignore(INT_MAX);
假设您有一个应用程序,当事情发生时,它会询问用户问题......
在这种情况下,清除输入缓冲区很重要,因为在等待期间,用户可能会无意中触摸键盘,并且这种意外触摸一直保留在缓冲区中,直到读取标准输入 (cin)。
这是一个设计决策,当您希望(多一点)确定这是用户有意识的决定,因此您不接受缓冲区中的数据。
所以在
cin >> opcion
你放之前cin.ignore(N)
,要从输入缓冲区中强制丢弃 N 个字节。最后,我不确定是否有适用于所有平台的便携式解决方案,这是基础。还有其他更多 C++ 样式选项。