2013-04-15 2 views
2

C++의 새로운 기능입니다. 다음과 같은 것을 할 수 있습니까?while을 while 루프의 조건부로 사용 하시겠습니까?

int temp; 
while(cin >> temp != -9999){//Do something with temp} 

내가 일을하는 그 정확한 코드를 얻을 수 없다,하지만 난 할 수 있어야 그와 같은 것을 같은 느낌.

편집 는 물론 다음 시도하지 : 아직도

while(cin.getline(temp) != -9999){//Do something with temp} 

아무것도. getline()은 문자열에서만 작동합니까?

while (std::cin >> temp && temp != -9999) 

그러나, C++에서의 연산자 우선 순위가 짜증나는, 그래서 사용합니다 :

+1

'동안' – Rapptz

+1

>> 연산자가에 대한 참조를 반환 입력 스트림 (이 경우 표준 입력). 코드 조각이 스트림에 대한 해당 참조를 값 -9999와 비교하여 유효합니다. Rapptz가이를 해결합니다. –

+3

@ user2280716 단락 회로는 역순으로 적용되지 않습니다. 그것은 잘 정의 된, 왼쪽에서 오른쪽. –

답변

6

예, 그렇습니다

while (std::cin >> temp) { 
    if (temp == -9999) 
     break; 

추론 std::cin이 스트림 것입니다. 당신은 같은 것들을 할 수 있도록 따라서, 그것에서 읽는 스트림을 반환합니다 (! 표준 : : 착 >> 온도 && 온도 = -9999)

std::cin >> temp >> temp2; 
+1

'&&'사용에 대해서는 생각조차하지 않았습니다. 그래도 말이 되네! –

+0

예. C++은 까다 롭습니다. 한 발 뒤로 물러나서 생각해야합니다. 'std :: cout'과'std :: cin'은 스트림이기 때문에'<<' and '>>'연산자를 사용하면'this' 객체의 equivilent를 반환해야합니다. 그래서 한 줄에 여러 개의 데이터 객체를 읽을 수 있습니다 . –