clear
numaralı telefonu aradıktan sonra, geçersiz girdiyi akıştan bir şekilde kaldırdınız. İşte bir yoludur:
cin
geçersiz giriş okumaya başarısız olduğunda, bu akışta kalır da ondan
cin >> arr[index];
if (!cin)
{
cin.clear();
std::string ignoreLine; //read the invalid input into it
std::getline(cin, ignoreLine); //read the line till next space
index--;
continue;
}
. Bazı yollarla kaldırılmalıdır. Sadece okudum ve görmezden geliyorum.
da kullanabilirsiniz ignore
olarak: Bence sağlanan girişler ayrılmış uzay olan (ve istemiyorsanız eğer geçersiz giriş incelemek) daha iyidir
cin.clear();
cin.ignore(std::numeric_limits<streamsize>::max(),' ');
. online doc söyler:
istream :: göz ardı
istream & göz ardı (streamsize, n = 1, int Ayraç = EOF);
Özü ve atın karakter
özleri giriş dizisinden karakterleri ve bunları atar.
Çıktı, n karakterleri ayıklandığında ve atıldığında veya karakter sınırlaması bulunduğunda (hangisi önce gelirse) sona erer. İkinci durumda, sınır karakterinin kendisi de ayıklanır.
Bu nedenle sonsuz döngü! –
@ Mr.DDD: Kesinlikle. :-) – Nawaz
@ Mr.DDD: Hangi geçersiz girdileri sağladığınız? – Nawaz