2012-03-31 3 views
1

사용자가 예상 한 것과 다른 데이터를 입력 할 때 런타임 오류를 처리하는 데 문제가 있습니다. 예를 들어 정수가 필요하지만 사용자가 문자열을 입력하는 경우 일 수 있습니다. 내 콘솔 프로그램에서, 이런 일이 생기면 화면에 정크가 많이 생기고 무한 루프가됩니다. 어떻게하면 전체 프로그램이 휴지통으로 이동하는 대신 오류 메시지가 표시 될 수 있도록 처리 할 수 ​​있습니까?C++에서 런타임 오류를 잡는 방법?

int x = 0; 
cout << "\n\nEnter a number(1-9): "; 
cin >> x; 
if(x<1 || x>9) 
{ 
    cout<<"\nThe place you entered is invalid. Please enter the correct place number"; 
}else{ 
    cout<<"Correct"; 
} 

제가 31^2 또는 그것은 무한 루프가는 char 값 (I는 nt 데이터의 최대 값을 알고)보다 위의 숫자를 입력 한 경우. 어떻게하면이 문제를 해결할 수 있습니까?

+0

다음은 중복 된 주소입니다 : http://stackoverflow.com/questions/545907/what-is-the-best-way-to-do-input-validation-in-c-with-cin –

답변

2

cin은 사용자로부터 데이터를 읽으려고 시도 할 때 유형이 잘못되었거나 (예 : int이 예상되는 경우 문자열을 입력하는 경우) 값이 불법 (예 : 너무 큽니다) 인 경우 cin은 "실패 상태"로 들어가고 그 지점부터는 사용자가 명시 적으로 문제를 해결할 때까지 사용자의 값을 읽지 않습니다. cin에서 올바르게 읽지 못하는 데이터는 약간 까다 롭습니다.하지만 한 번 좋은 헬퍼 루틴을 작성하고 나중에 프로그램에서 호출하면 간단해질 수 있습니다. 제대로 cin에서 데이터를 읽기위한 하나의 접근 방법에 대한 설명은

, 당신은 C에서 작업 스트림 ++ 어떻게 적절하게 데이터를 읽고 쓰는 방법을 설명 these course notes from Stanford's CS106L course을 확인 할 수 있습니다.

희망이 도움이됩니다.

관련 문제