2017-11-27 2 views
-1

일부 수치를 읽고 있습니다. 입력은 다음과 같습니다.Cin 읽기 '까지'; cpp에 있습니다.

1 2 3 4 ; 2 3 4 5 6; 

'; 나는 그걸로 숫자와 그걸로 뭔가를하고 싶다. 현재 내가 사용하고 있습니다 : 그것은 단지 어떤 문자의 경우

while(1) { 
    cin >> num; 
    if(cin.fail()){ 
     // end of first array 
     return 0; 
    } 
} 

그러나,이 방법 CIN이 실패 할 수 있습니다 ';'

+2

['표준 : getline'] (http://en.cppreference.com/w/cpp/string/basic_string/getline) 표준'와 함께 :: istringstream' 당신이 원하는 것을 할 수있게된다 – Justin

+0

'std :: cin '이 실패 상태에 있다면 읽는 다음 문자는 당신의 예제에서';''이 될 것이고,'clear()'를 사용하고';; 계속하는 성품 '. – user0042

+1

이 답변의 옵션 2를보십시오 : https://stackoverflow.com/a/7868998/4581301. ''while (std :: getline (infile, line, ';'))'')을 지정하고 파일 스트림을'cin'으로 대체하는 기능을 이용하십시오. – user4581301

답변

0

당신은 cahr을 읽고 그것을 확인할 수 있습니다. 숫자가 아닌 경우 원하는 것을 수행하고 반환하십시오. 그렇지 않으면 cin.putback(char)을 사용하여 char을 다시 넣고 int를 읽습니다.

char c; 
while (1) { 
    cin >> c; 
    if (c < '0' || c >'9') { // is not digit 
     // do something 
     return 0; 
    } 
    cin.putback(c); 
    cin >> num; 
}