После некоторых предложений. Я применил их.Поведение странного поведения cin
Отрывок из функции bool getInput(int format=1)
cin>>num1>>plus>>num2>>i;
if(cin.fail()){
cout<<"\n[X][cin--fail] Oops! You entered in the incorrect format! Correct format: a+bi";
cin.clear();
cin.ignore(INT_MAX);
return false;
}
if(plus == '+' && i=='i'){
setComplex(num1, num2);
return true;
} else {
cout<<"\n[X] Oops! You entered in the incorrect format! Correct format: a+bi";
return false;
}
Я еще одну функцию, которая вызывает указанную выше функцию.
void getInput_recursive(int format=1){
while(!getInput(format)){};
}
Он отлично работает для правильного ввода. Но когда ввод похож на 2+3iiiii
, тогда происходит какая-то странная вещь.
Мое первое предположение: Возможно, это было связано с входным буфером. Я попытался очистить его, используя cin.ignore
и cin.clear
, но все равно ничего не произошло.
Может ли кто-нибудь помочь мне здесь? Что я делаю не так?
Вы можете найти полный код здесь: http://codepad.org/Gl2zBrn1
спасибо, но не помог – cipher
это изменило мой выход, но он снова был странным и неопределенным:/ – cipher
вы можете вставить в функции get_input и get_inputRecursive ... может быть, проблема не в коде, вы показываете – Pandrei