2012-03-21 3 views
2

사용자가 입력 끝 (linux에서 ctrl-d)을 나타낼 때까지 문자열과 정수를 읽어야합니다. 다시, 나는 붙어있다. 현재 나는 while 루프를 가지고 있습니다 :입력 끝까지 Cin 입력

while (getline(cin, line)) 

그러나 전체 라인을 제공 한 다음 문자열을 정수와 분리 할 수 ​​없습니다. 제안은 가장 높이 평가 될 것입니다! :)

+0

입력에 "문자열"을 구성하는 요소는 무엇입니까? 단일 단어 또는 여러 단어가 포함 된 구문? 나는. "George Bush 43"유효한 입력인가, 아니면 "George-Bush 43"이어야합니까? –

+0

while (cin >> mystring >> myint) { –

답변

4

문자열과 정수가 공백으로 구분되는 경우. 이 작업을 수행 :

while(std::cin>>your_string>>your_num>>std::ws){} 

당신은 매니퓰레이터 자신을 작성하여, 자신의 구분 기호를 선택할 수 있습니다.

또 다른 방법은 입력 스트림을 문자열 스트림에 넣고 문자열과 숫자를 추출하는 것입니다. 이 접근법은 스트림에서 다른 스트리밍으로 스트링을 가져 오는 것만 큼 나에게 로터리처럼 보입니다.

+0

고마워요! 이 포럼은 선생님보다 낫습니다! 도움에 감사드립니다. – DangerMoose

+1

'>> std :: ws'는 필요 없습니다. 다음 입력은 중간에있는 모든 공백을 먹습니다. –

+0

@ Robᵩ : 고마워, 그걸 몰랐어. – manasij7479