0
나는 사용자가 정수를 입력했는지 여부를 테스트해야하는이 코드 스 니펫을 가지고 있습니다. 사용자가 글자를 입력했지만 십진수는 입력하지 않으면 작동합니다. 왜 그런지 궁금합니다. 여기 내 코드입니다 :코드 조각은 특정 케이스에서 작동하지만 예상대로 작동하지 않는 이유는 무엇입니까?
Student student;
int id;
while(!(cin >> id))
{
cout << "\nERROR: Please enter a Positive Whole Number" << endl;
cin.clear();
cin.ignore();
cout << "Enter Student ID: ";
}
이 A
를 입력하면이 while 루프를 반복 할 것입니다,하지만 난 12.5
를 입력하면 그것은 while 루프를 중퇴하고가는 유지합니다. 그것이 정수로 파싱되는지 아닌지를 테스트하지 않습니까? 문자가 아닌 12.5
을받는 이유는 무엇입니까?
'isdigit()'시도를 보았습니다.하지만 새로운 솔루션을 찾기 시작하면서 12.5의 실제 인스턴스가 계속 나타납니다. 감사하지만 다시 시도 할 것입니다! –
123abc 등을 허용하지 않는'boost :: lexical_cast'도 시도해 볼 수 있습니다. – chris