2014-04-12 2 views
0

내가 while(cin >> word) { cout << word } 프로그램을 사용할 때 하나씩 모든 단어가 나옵니다. 그러나 나는 이유를 이해할 수 없다. int를 사용할 때 루프를 끝내기 위해 i ++와 같은 것을 씁니다. 내 질문은 프로그램이 다음 단어를 쓰는 것을 어떻게 알고 처음 단어를 반복해서 쓰지 않는가?프로그램에서 새 문자열을 계속 사용하는 것을 어떻게 알 수 있습니까?

+1

'while' 루프가 무엇인지 모르는 경우에는 C++의 입문서를 읽어야합니다. –

답변

0

cin >> word은 두 가지 별도의 작업을 수행합니다. 입력에서 단어를 읽고 (cin의 상태 변경) 성공했는지 여부를 알려줍니다 (그래서 루프는 종료 시점을 알고 있습니다). 다음 번에 루프 cin은 이미 읽은 것을 알고 다음으로 넘어갑니다.

그래서 부작용이있는 함수입니다. 결과를 반환 할뿐만 아니라 시스템의 상태도 변경합니다. 이것에 대한 두 가지 견해가 있습니다 - 코드를 어렵게 만드는 것은 매우 나쁜 생각입니다. 간단하지만 강력한 코드를 작성하는 데 매우 유용합니다. 둘 다 어느 정도 사실입니다.

+0

이 경우 쉽게 읽을 수있는 (그러나 여전히 올바른) 대안은 무엇입니까? – sepp2k

+0

나는 여기서 좋은 대안을 발견하지 못한다. 우리는 그것을 훨씬 더 복잡하게 만들 필요가있다. 그러나 일반적으로 iostreans 및 C++은 일반적으로 부작용을 받아들이는 경향이 있습니다. 여기 나는 그것이 무해하다고 생각한다; 더 복잡한 경우에 문제를 일으킬 수 있습니다. –

+0

@sepp, 이것은 읽기가 쉽습니다. 'while (condition)'은 모든 프로그래머가 알고있는 구조들 사이에 있어야합니다. ''while (stream >> 변수) '관용구에 익숙하지 않다면 익숙해지기에 이제는 매우 간결하고 튼튼합니다. –

0

루프의 반복마다 조건 cin >> word이 실행되기 때문에. 따라서 cout 문이 실행되기 전에 cin 문이 실행되고 word을 현재 입력 된 문자열로 설정합니다.

관련 문제