2012-03-04 4 views
4

나는 그들이 똑같은 줄 알았지 만 온라인 판사 (endl(cout))에게 코드를 보냈을 때 "잘못된 대답"판결을 내렸고 cout << endl으로 다른 사람을 보내려고했고 판사가 코드를 수락했습니다! 누구든지 그 명령의 차이점을 알고 있습니까?누구나 endl (cout)과 cout << endl의 차이점을 알고 있습니까?

+0

'std :: cout'을 사용하면 첫 번째 양식은 컴파일되지만 두 번째 양식은 (인수 별 조회로 인해) 컴파일되지 않습니다. 두 번째 양식이 작동하지만 첫 번째 양식이 온라인 판사의 경우와 다른 경우는 생각할 수 없습니다. – interjay

답변

3

제가 아는 사람이 없습니다. 그냥 바로 함수를 적용, 당신은 std::cout에 적용 할 때

ostream& endl (ostream& os); 

:

std::endl

는 스트림을 가지고 스트림을 반환하는 기능입니다.

template <typename C, typename T> 
basic_ostream<C,T>& operator<<(basic_ostream<C,T>& (*pf)(basic_ostream<C,T>&)); 

또한 바로 함수를 적용한다 : 한편

, std::basic_ostream는 서명 operator<<의 과부하를 갖는다.

따라서 기술적으로 차이는 없습니다. 스트림 std::cout << std::endl이 더 관용적이지만. 판사 로봇이 단순하다는 생각이들 수도 있지만 실현하지는 못합니다.

+0

유일한 차이점은'cout << endl' 대신 두 가지 함수 호출이 있다는 것입니다. –

+0

고마워요! 앞으로 endout 만 사용하게 될 것입니다. – hinafu

+0

기다림, endl은 ios_base (* pf) (ios_base &)로 변환해서는 안됩니다. IIRC에는 또 다른 오버로드가 있습니다. – Xeo

2

유일한 차이점은 endl(cout)은 전체 기능으로 간주되는 반면 cout << endl에는 endl이 조작자로 간주된다는 점입니다. 하지만 그들은 같은 효과가 있습니다.

1

두 양식 간의 동작에는 차이가 없습니다. 둘 다 조작자 (cout << endl) 또는 자유 기능 (endl(cout))으로 사용할 수있는 동일한 endl 기능을 나타냅니다.

1

위의 답변은 정확합니다! 또한 << endl; 또는 endl(cout)을 사용하는지 여부에 따라 코드의 줄 수를 줄일 수 있습니다.

예 :

당신은 같은 것을 할 수 있습니다

그러나

cout << "Hello World" << endl;

또는

cout << "Hello World";

endl(cout);

,,617을cout << "Hello World" << endl(cout); // 작동하지 않음

따라서이 예에서는 2 줄 대 1 줄입니다.

관련 문제