Study Room1./C/C++/MFC/Verilog

c++ 숫자만 입력받기 _ cin.clear() cin.ignore()

콜콜이 2012. 9. 15. 13:41

c++ 숫자만 입력받기 _ cin.clear()  cin.ignore() c++ 숫자만 입력받기 _ cin.clear()  cin.ignore() 숫자만 입력 c++ cin.clear(); cin.ignore();


c++ 숫자만 입력받기 _ cin.clear()  cin.ignore()


C++ 과제를 하다가 다음과 같은 문제에 봉착하였다.

while문을 통하여, 숫자가 아닌 경우에는 다시 입력을 받는 방식인데,

관련 코드 부분만 보자면,

cout << "first input : " ;

cin >> inputNum1;

while(1){

if(inputNum1 >= 0 && inputNum1 <= 9){

break;

}

cout << "re-first input : " ;

cin >> inputNum1;

}


문제는 입력을 숫자가 아닌 다른 키값이 들어오면, 다시 입력을 받을 수 있는 상태가 아닌,

계속해서 cout상태가 무한 루프로 도는 것이였다.


기억을 되살려보니, 예전에 C언어를 할 때는 아마 buffer 문제와 관련해서 fflush()를 해주었던 기억이 있었는데, 

여기서는 fflush()를 넣어도 안되었음.


구글링 검색결과 다음과 같이 고치면, 고쳐짐

cout << "first input : " ;

cin >> inputNum1;

while(1){

if(inputNum1 >= 0 && inputNum1 <= 9){

break;

}

cin.clear();

cin.ignore();

cout << "re-first input : " ;

cin >> inputNum1;

}


여기를 참고해서 만든 코드는 아니지만, 그래도 구글링을 더 하다보니 이런 블로그 글이 있길래 참고하면 좋을 듯 하다!

주소 : http://bbolmin.tistory.com/17


C++을 처음 접하다 보니 생긴 하나의 해프닝이랄까!?

어쨋든, 요즘 어셈블리에 자바에 안드로이드에 c++에 리눅스에 정신이 없당...ㅜㅜ

한 우물을 잘 파야되는뎅..ㅜㅜ