C++ Getline()始终接受输入
我正在从我的网络摄像头捕获视频,如果用户点击回车键,我会拍照。然后我向用户询问“图片是否正常?”并等待输入。如果他说“不”,我会继续做同样的事情,直到他说“是” 但如果他说“不”,同时我在终端中键入了一些内容,getline()函数会将我键入的任何内容写入其缓冲区,当我再次提问时,它会直接进入“无效输入”状态 我如何防止这种情况 我读了很多关于这方面的问题,在调用getline()之前/之后,我尝试使用cin.ignore()和cin.clear(),但它们没有帮助C++ Getline()始终接受输入,c++,input,cin,getline,C++,Input,Cin,Getline,我正在从我的网络摄像头捕获视频,如果用户点击回车键,我会拍照。然后我向用户询问“图片是否正常?”并等待输入。如果他说“不”,我会继续做同样的事情,直到他说“是” 但如果他说“不”,同时我在终端中键入了一些内容,getline()函数会将我键入的任何内容写入其缓冲区,当我再次提问时,它会直接进入“无效输入”状态 我如何防止这种情况 我读了很多关于这方面的问题,在调用getline()之前/之后,我尝试使用cin.ignore()和cin.clear(),但它们没有帮助 // Do capt
// Do capturing here
string choice;
int choiceIsOkay = 0;
while (choiceIsOkay == 0)
{
cout << "Is the picture okay? (Y/N): ";
getline(cin, choice);
if ((choice == "Y") || (choice == "y"))
{
choiceIsOkay = 2;
}
else if ((choice == "N") || (choice == "n"))
{
choiceIsOkay = 1;
}
else
{
cout << "\nInvalid input\n";
choiceIsOkay = 0;
}
}
if (choiceIsOkay == 2)
{
runAlgorithm = 1;
break;
}
else choiceIsOkay = 0;
//在这里做捕获
字符串选择;
int choiceIsOkay=0;
while(choiceIsOkay==0)
{
cout如果我理解您的问题,如果用户在
中输入一些随机文本,您的程序总是跳入“无效输入”,并且从不停止等待用户输入。下面的代码应该可以解决您的问题
#include <iostream>
#include <string>
using namespace std;
int main()
{
int runAlgorithm;
// Do capturing here
int i = 0;
while (i++ < 3)
{
int choiceIsOkay = 0;
string choice;
while (choiceIsOkay == 0)
{
cout << "Is the picture okay? (Y/N): ";
getline(cin, choice);
if ((choice == "Y") || (choice == "y"))
{
choiceIsOkay = 2;
}
else if ((choice == "N") || (choice == "n"))
{
choiceIsOkay = 1;
}
else
{
cout << "nInvalid inputn";
choiceIsOkay = 0;
}
// Ignore to the end of line
cin.clear();
}
}
return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
整数算法;
//你在这里做什么
int i=0;
而(i++<3)
{
int choiceIsOkay=0;
字符串选择;
while(choiceIsOkay==0)
{
难道这是意料之中的事吗?为什么你的程序只需要输入ENTER和Y/N呢?@Dúthomhas“错了”。我想采取一切预防措施。啊,好吧。除了要求你的用户注意他们键入的内容之外,你没什么办法。你可以忽略除最后一个“Y”或“N”之外的任何内容。