본문 바로가기

C/C++

cin 입력 에러 해결법

cin 입력 에러 해결법


정수를 받으려 cin을 사용했는데 유저가 실수로 문자를 입력한 경우.

while(1)과 cin을 사용한 입력 조합의 경우 무한루프에 빠지게 된다.(물론 그런 조합이 아니라도 충분히 문제를 일으킨다!)


3단계를 통해 처리한다

1. cin.fail()로 잘못된 입력이 일어났는지 확인한다

2. cin.clear()로 에러 상태를 취소한다

3. cin.ignore()로 입력버퍼에 남아있는 잘못된 값들을 지운다



아래는

내가 만들었던 cin >> 정수; 를 대체하는 함수다.

잘못된 입력이 들어오면 표준 입력 스트림을 정리한다.

그 후 재귀호출을 통해 반드시 정수를 받아내고야 만다!


int getNumber() {

int retNum;

cout << "Enter Number: ";
cin >> retNum;

// 잘못된 입력을 받았을 경우
if (cin.fail())
cout << "Wrong Number. Retry!" << endl; // 에러 메시지 출력
cin.clear(); // 오류스트림을 초기화
cin.ignore(256, '\n'); // 입력버퍼를 비움
return getNumber(); // 함수를 재호출한다
}

return retNum;
}


'C/C++' 카테고리의 다른 글

C++11 강제  (0) 2015.01.26
Eclise CDT C++11지원  (0) 2015.01.26
C++ string 정리 (C++ 문자열)  (1) 2013.06.09
아스키코드표 ASCII  (0) 2013.04.06
구글 코드 스타일 가이드 C++  (0) 2013.02.10