2011-03-28 3 views
0

스트림을 통해 표준 cin을 사용하는 경우 cin.ignore(100,'\n')이 작동합니까?C++ : cin.ignore를 사용하기 전에 cin.get()을 사용해야합니까?

예 :

cin >> temp; //enter key input 
if(cin.fail()) 
{ 
    cin.clear(); 
    cin.ignore(100,'\n'); 
} 

또는 내가) (cin.get를 사용해야합니까?

예 :

temp=cin.get(); 
if(cin.fail()) 
{ 
    cin.clear(); 
    cin.ignore(100,'\n'); 
} 

또는이 코드는 동일한 결과를 생성 할 것인가?

+2

방금 ​​실행하려했는데 어떤 현상이 발생 했습니까? 또한 원하는 행동은 무엇이며 '임시'유형은 무엇입니까? –

+0

예, 불행히도 둘 다 내가 좋아하는 방식대로 작동하지 않는 것 같습니다. 그러므로 질문입니다. temp는'int'이므로 사용자가 키보드를 매시 할 때 오류를 지워야합니다. 그것으로 작동하지만 추가 줄 바꿈을 인쇄하고 다시 돌아올 때까지 중단됩니다. – dukevin

+0

그런 다음 어떻게 행동하길 원하십니까? –

답변

0

아, 저 바보, 내가 삭제

void clear() 
{ 
    cin.clear(); 
    cin.ignore(100,'\n'); 
} 

내 프로그램을 호출하는 함수를 만들어,이 기능 clear() 번 이상했다. cin에서 입력하지 않고 clear()을 두 번 연속 호출 한 경우 빈 줄에 입력하라는 메시지가 표시됩니다.

나는 이것이 그 원인이라고 생각합니다.

+0

후속 질문 : 가비지 입력을 삭제하는 더 효율적인 방법이 있습니까? – dukevin

+0

아니요, clear()는 일부 상태 플래그 만 지 웁니다. 두 번 부르는 데 아무런 해가 없습니다. –

+0

죄송합니다, 혼란, 제 함수는 clear() cin.clear() .. 내 clear() 함수를 호출하면 다른 줄 바꿈을 요구합니다. – dukevin

관련 문제