cryoffiar написав:А якщо при воді дати народження писати ., \ чи інший символ то буде безкінечний цикл.
Так, бо зчитування помилкових даних - окрема історія, яку початківцям не пояснюють. Хоча дивно, там використовуються виключні ситуації. Коротше, просто неякісний навчальний матеріал. Що можна було сказати й просто за доменним іменем - не користуйтеся інформацією з домену .ru.
Після такого некоректного зчитування об'єкт cin переходить у стан помилки, який треба перевірити і виправити. Доки cin в стані помилки, читати з нього неможливо.
int x;
cin >> x;//припустимо, тут ввели не число
if(!cin){ //якщо сталася помилка - обробляємо
cin.clear();//скидаємо стан помилки; але символи, які були введені, все ще лишаються в буфері, і наступна операція зчитування призведе знову до помилки
cin.ignore(256, '\n');//викидаємо з буфера 256 символів або доки не зустрінеться знак нового рядка (Enter)
//теоретично, в цьому місці ignore знову може привести cin у стан помилки, думайте самі, що робити тоді
} else {
//а ось тут все гаразд, значення x можна використовувати
}