2011-04-14 5 views
1

이것은 처음에는 이상한 질문 인 것처럼 보일 수 있지만, cin 요청이있을 때 잘못된 유형을 수신하면 여전히 계속되지만 cin 상태가 변경됩니다.iostream cin을 올바르게 사용하려면 어떻게해야합니까?

cin이 괜찮을 때까지 어떻게 루프합니까? 숫자를 물어볼 때 여분의 코드가 주어지지 않으면 문자열을 "받아들입니다". 루프?

마지막으로 cin을 여러 번 사용하면 예상대로 처음으로 cin을 수행하지만 나머지는 건너 뜁니다. 어떻게 해결할 수 있습니까? 더 많은 정보가 필요하면 의견을 물어보십시오.

// Example 
cout << "Enter a number: "; 
cin >> num; // A string is given 

cout << "Enter another number: "; 
cin >> num2; 

위의 예에서 문자열은 다소 허용되며 두 번째 cin은 어떤 이유로 건너 뛸 수 있습니다. 나는 얼마 전에 있었다이 질문에 대한 답을 찾을하지만 난 그렇게 사용되는 루프의 조각을 분실/

+3

거의 당신이 도움이 될 것입니다 원하는 것을 코드의 작은 조각 . –

답변

2

예 :

int value; 
while(!(cin >> value)) 
{ 
    cin.clear(); 
    cin.ignore(); // eat one character 
} 

while(!(cin >> value)) 
{ 
    cin.clear(); 
    cin.ignore(10000,'\n'); // eat the rest of the line 
} 
+0

+1, http://cplusplus.com/reference/iostream/ios/operatornot/ – Dacav

관련 문제