2010-04-29 4 views
0

여기 프로그래밍 초보자. 사용자가 콘솔의 한 줄에 이름 (예 : "John Jane Doe")을 입력 할 수있게하려고합니다. 나는 middleName을 선택적으로 만들고 싶습니다. 따라서 사용자가 "John Doe"를 입력하면 성과 이름 문자열 만 저장됩니다. 사용자가 "John Jane Doe"를 입력하면 세 개를 모두 저장합니다.C++ cin 공백 질문

나는이 사용하는 거라고 :

cin >> firstName >> middleName >> lastName; 

다음 나는 사용자가 자신의 중간 이름을 생략하기로 선택 유입되면 사용자가 세 번째 문자열을 입력하는 "홍길동"이 콘솔은 단지 대기하는 실현 ... 나는 하나의 커다란 끈으로 이것을 수행 할 수 있고 그것을 두세 가지로 분해 할 수 있다는 것을 알고 있지만, 위의 세 끈으로이 작업을 수행하는 더 간단한 방법은 없습니까?

여기 내가 간단한 것을 놓치고있는 것처럼 느껴집니다 ...

미리 감사드립니다.

+0

Yeap, fixed. 감사! – buddyfox

답변

5

getline을 사용하고 stringstream을 사용하여 구문 분석하십시오.

#include <sstream> 

string line; 
getline(cin, line); 
istringstream parse(line); 

string first, middle, last; 
parse >> first >> middle >> last; 
if (last.empty()) swap(middle, last); 
+0

buddyfox는 초보자이기 때문에'std ::'접두어를 생략했기 때문에 위의 투표를 삭제하겠다고 위협했습니다. ':)' – sbi

+1

@sbi : lol, on std ::'우리는 다릅니다. 나는 초보자들을 두려워하지 않고 자신을 고문하지 않는 것을 선호한다, v). – Potatoswatter

+0

@sbi : 고마워. –