간단한 코드를 작성했습니다.
#include <iostream>
using namespace std;
int main()
{
int a, b;
while (cin >> a >> b) //Note the cin inside while loop
{
cout << a << b << "\n";
}
}
while
루프는 표현식이 true
( 1
) 또는 false
( 0
)로 평가 될 때만 작동 한다는 것을 알고 있습니다. 어떻게 와서 cin
평가하고 true
와 false
.
또한 숫자를 입력 할 때 while 루프가 실행되고 숫자가 아닌 것을 입력하면 중지되는 방법은 무엇 입니까? 참과 거짓을 어떻게 평가합니까?
를 작성할 때 cin >> a
실제로를 사용하고 있습니다. 여기std::istream::operator>>
참조에 따르면 이 연산자 는 객체 참조를 반환 하고 오른쪽 변수 (참조)를 인수로 사용합니다. 다음과 같이 연결할 수 있습니다 ..istream&
cin >> a >> b
이 cin >> a >> b
체인을 다른 방식으로 보려면 , 분해 할 때 다음 두 단계를 따르십시오.
cin >> a
는 중간 값을 반환합니다 x
. (실제로 auto x = cin >> a
.(cin >> a) >> b
우리는이 중간 값을 사용할 때 x
, 우리가 그것을 쓸 수 있습니다 x >> b
.그래서이게 뭐야 x
? x
여기서는와 같은 위치에 있으며 유형 cin
의 객체입니다 istream&
.
따라서 true
또는 false
에 대해 말할 때 실제로이 반환 된 istream&
참조가 객체를 참조하는지 true
또는 객체를 참조 하는지에 대해 이야기 하는 것입니다 false
. 그것은 것 false
표준 출력 (당신이 시스템처럼 유닉스에서 Ctrl-C를 입력 할 때, 또는 당신이 파일의 끝에 읽을 때와 같은)를 EOF 기호를 잡을 때.
따라서 코드를 다음과 같이 확장 할 수 있습니다.
#include <iostream>
using namespace std;
int main()
{
int a, b;
auto x = cin >> a >> b
while (x)
{
cout << a << b << "\n";
}
}
Visual Studio와 같은 IDE를 사용하는 경우 마우스로 변수를 가리킬 수 있습니다. 그러면 유형을 x
묻는 메시지가 표시됩니다 .x
istream&
또한, Bob__ 덕분에,이 istream&
클래스는로 변환 할 수있는 ios::operator bool
등의 기록, 클래스 여기 가 있는지, true
또는 false
(상태를 나타냅니다 ios_base::iostate
) 이런 stream
, 그것은 therfore
가능 스트림 관용적 C 초래 루프 상태 스트림에 리턴 참조 ++ 입력 같은 것을 루프 기능 사용할 수
while(stream >> value) {...}
이상while(getline(stream, string)){...}
. 이러한 루프는 입력 작업이 성공한 경우에만 루프의 본문을 실행합니다.
이해를 돕기 위해 교과서의 연산자 (오버로딩) 장을 읽어야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다