2013-06-28 2 views
1

그래서 정수 만 허용하는 루프를 만들려고합니다. 처음에는 문제가 없지만 정수가 아닌 문자열이 입력되면 곧바로 올바른 입력이 사용되는 경우에도 if 문. 내가 놓친 게 있니? 당신이 다음 줄을 읽기 전에 stringstream이 해제 될 수 있도록입력이 정수 루프인지 확인합니다.

# include "stdafx.h" 
#include <iostream> 
#include <fstream> 
#include <sstream> 
#include <string> 

using namespace std; 


int main() 
{ 
    string str; 
    stringstream ss; 
    int a; 


    for(;;) 
    { 
     getline(cin, str); 
     ss<<str; 
     if (ss>> a) 
     { 
      cout<<"okay"; 
      break; 
     } 
     cout<<str<<endl;//debugging (prints the correct input 
     str.clear(); // 
     ss>>str;  // 
     cout<<str<<endl;// doesn't print anything but the endl space 
     cout<< "try again"; 
ss.str(""); 
} 

} 

답변

0

for 루프 내부 이동 ss.str("");.

붙여 넣은 코드에 }도 추가로 있습니다. 어쩌면 그 라인이 루프 밖에서 어떻게 끝났는지와 관련이 있습니다.

다른 방법으로 사용할 수 있습니다

ss.str(str); 

대신 >>로에 추가의 입력에서 stringstream를 입력 할 수 있습니다.

+0

oops 여분 {사본/붙여 넣기 오류에서였습니다. for 루프 안에 ss.str ("")을 이동했지만 여전히 같은 문제가 있습니다. – user2533259