Saya merekam video dari webcam saya dan jika pengguna menekan tombol Enter, saya akan mengambil gambarnya. Lalu aku bertanya, "Apakah gambarnya oke?" kepada pengguna dan menunggu masukan. Kalau dia bilang "Tidak", aku terus melakukan hal yang sama, sampai dia bilang "Ya".
Tetapi jika dia mengatakan "Tidak", dan sementara itu saya mengetik sesuatu di terminal, fungsi getline() menulis apa pun yang saya ketik ke dalam buffernya, dan ketika saya mengajukan pertanyaan lagi, ia langsung masuk ke status "input tidak valid".
Bagaimana cara mencegah hal ini?
Saya telah membaca banyak pertanyaan mengenai ini dan saya mencoba menggunakan cin.ignore() dan cin.clear() sebelum/sesudah setelah saya memanggil getline(), tetapi tidak membantu.
// 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;