> 백엔드 개발 > C++ > 숫자가 아닌 입력으로 'cin'이 무한 루프를 일으키는 이유는 무엇입니까?

숫자가 아닌 입력으로 'cin'이 무한 루프를 일으키는 이유는 무엇입니까?

DDD
풀어 주다: 2024-12-22 16:51:12
원래의
759명이 탐색했습니다.

Why Does `cin` Cause an Infinite Loop with Non-Numerical Input?

문자 입력으로 숫자 입력을 기대할 때 cin을 사용하는 무한 루프

문제의 코드는 대신 문자를 입력할 때 cin을 사용하는 무한 루프를 포함합니다. 기대되는 숫자.

무한대에 대한 설명 루프

cin이 숫자가 아닌 입력을 만나면 실패 상태로 들어가고 추가 입력을 위한 명령줄 프롬프트를 중지합니다. 이로 인해 사용자 상호 작용 없이 루프가 계속 실행됩니다.

cin으로 잘못된 입력 감지

이 문제를 방지하고 잘못된 입력을 감지하려면 cin이 다음과 같은지 확인할 수 있습니다. 다음을 사용하여 실패 상태에서:

if (cin.fail())
{
    // Handle invalid input here
}
로그인 후 복사

실패 상태가 발생하면 이를 지우고 잘못된 입력을 삭제할 수 있습니다. 사용:

cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
로그인 후 복사

이렇게 하면 cin이 작동 상태로 재설정되어 계속해서 입력 메시지를 표시할 수 있습니다.

더 정교한 검증을 위해 문자열 입력 스트림을 사용하여 입력 문자를 확인할 수 있습니다. 문자별로 더 고급 검증을 수행합니다.

위 내용은 숫자가 아닌 입력으로 'cin'이 무한 루프를 일으키는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿