2011-09-15 10 views
17

나는 아무 소용이 없어 보였습니다. 아무도 감히 그렇게 간단한 질문을하지 않을까 걱정됩니다.한 줄에 여러 입력

한 줄에 표준 입력에서 여러 항목을 입력 할 수 있습니까?

float a, b; 
char c; 

// It is safe to assume a, b, c will be in float, float, char form? 
cin >> a >> b >> c; 
+3

몇 가지 질문을하지 않아도됩니다. 당신이 그것을 시도하면 어떻게됩니까? – outis

+0

나는 지금 내가 이것을 시도 할 수있는 곳이 아니다. – Joshua

+3

@ Joshua [인터넷] (http://ideone.com/) [액세스] (http://codepad.org/)이 없습니까? –

답변

21

예, 정확하게 구문을 사용하여 cin에서 입력 다중 항목, 당신이 설명 할 수 있습니다 :이 의미한다. 그 결과는 본질적으로 다음과 같습니다 :

cin >> a; 
cin >> b; 
cin >> c; 

이것은 "연산자 연쇄 화"라는 기술 때문입니다.

operator>>(istream&, T) (여기서 T은 임의의 유형 임)에 대한 각 호출은 첫 번째 인수에 대한 참조를 반환합니다. 따라서 cin >> acin을 반환하며 (cin>>a)>>b 등으로 사용할 수 있습니다.

operator>>(istream&, T)을 호출 할 때마다 먼저 공백 문자를 모두 소비 한 다음 입력 작업을 수행하는 데 필요한만큼의 문자를 사용하고 첫 번째 공백 문자, 유효하지 않은 문자 또는 EOF까지 (포함하지 않음)까지 사용합니다.

+0

감사합니다. 나는 그렇게 생각하고 있었지만, 나는 내가있는 곳에서 그것을 실제로 테스트 할 수 없었고, 나는 지식을 가려워했다. – Joshua

+0

나는 공백 문자를 인식하고 있었지만 나머지는 인식하지 못했습니다. 산뜻한! – Joshua

+1

공백 문자는'skipws' 플래그가 설정된 경우에만 소비된다는 점에 유의하십시오. –

5

예, 가능합니다.

cplusplus.com에서 :

이러한 함수 연산자 기능을 오버로드되기 때문에, 그들은 호출되는 일반적인 방법은 : strm는 IStream을 개체와 variable의 식별자이다

strm >> variable; 

모든 매개 변수는 오른쪽 매개 변수로 지원됩니다. 동일한 개체 strm에서 연속 추출을 수행하는 것과 동일

strm >> variable1 >> variable2 >> variable3; //... 

: 같은 추출 조작의 연속을 호출 할 수있다.

strmcin으로 바꿉니다.

관련 문제