ฉันกำลังจับภาพวิดีโอจากเว็บแคมของฉัน และหากผู้ใช้กดปุ่ม Enter ฉันจะถ่ายภาพ แล้วถามว่า "รูปโอเคไหม?" ให้กับผู้ใช้และรออินพุต ถ้าเขาตอบว่า "ไม่" ฉันก็จะทำแบบเดิมต่อไป จนกว่าเขาจะตอบว่า "ใช่"
แต่ถ้าเขาพูดว่า "ไม่" และในระหว่างนี้ ฉันพิมพ์บางอย่างในเทอร์มินัล ฟังก์ชัน getline() จะเขียนสิ่งที่ฉันพิมพ์ลงในบัฟเฟอร์ และเมื่อฉันถามคำถามอีกครั้ง มันจะไปที่สถานะ "อินพุตไม่ถูกต้อง" โดยตรง
ฉันจะป้องกันสิ่งนี้ได้อย่างไร?
ฉันได้อ่านคำถามมากมายเกี่ยวกับเรื่องนี้และฉันพยายามใช้ cin.ignore() และ cin.clear() ก่อน/หลังหลังจากที่ฉันโทรไปที่ getline() แต่พวกเขาไม่ได้ช่วยอะไร
// 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;