2012-05-20 4 views
2

STL std::cout의 소스 코드를보고 싶습니다. 나는 iostream을 보았지만 "extern cout"만 보았습니다. 그래서 저는 그것이 라이브러리의 어딘가에 정의되어 있다고 생각합니다. C++ STL cout 소스 코드

내가 official site

에서 소스 코드를 다운로드 나는 그것을 추출했다 :

[email protected]:~/desktop/stl$ grep -F * | grep "cout" 

을하지만 난 아무것도 없어.

내가 뭘 잘못하고 있니? 소스 코드는 어디에 있습니까?

+7

내가 눈을 구울 것 소스 코드를 내기 기꺼이 그 source code 온라인 검색이 있습니다. – chris

+0

일 수도 있습니다, 나는 단지 그것이 어떻게 작동하는지 알고 싶습니다. printf와 cout을 내부에서 비교하고 싶습니다. – Tebe

+5

'std :: cout'은 함수가 아니며 객체입니다. 그건 제쳐두고, iostream.cpp의 [libC++] (http://libcxx.llvm.org/)로 행운을 시험해보십시오. – Xeo

답변

5

cout은 STL의 일부가 아니므로 cout의 출처를 STL 소스에서 찾을 수 없습니다.

아마도 STL을 기반으로하고 iostream을 포함하는 C++ 표준 라이브러리의 소스를 찾고 싶을 것입니다. 그것이 사용하는 플랫폼에 따라 다릅니다.

+0

잘 보시다시피 http://www.cplusplus.com/reference/. cout의 헤더는 ostream입니다. ostream에서 cout의 실현을 찾을 수 없습니다. 그걸 찾는 방법을 알려 줄 수 있겠습니까? 나는 "cout"이라는 단어를 구했고, 나는 단지 그것을 주석으로 만들었습니다. – Tebe

+0

@shbk : Alan은 C++ 표준 라이브러리와 STL이 다른 점을 언급하고 있습니다. 그러나 STL 라이브러리의 복사본으로 시작된 많은 사람들이 C++ 표준 라이브러리 "STL"을 호출합니다. 원래 STL 라이브러리에는 스트림이 포함되어 있지 않았습니다. –

+1

@shbk : cout은 ostream에 있어서는 안되며 iostream에 있어야합니다. 그러나 주석에서 말했듯이, cout은 객체가 아니라 함수입니다. 그래서 찾는 법은 그것이 어떻게 작동하는지 당신에게 이야기하지 않을 것입니다. 그 클래스 (ostream)와 그 클래스의 기능을 찾아야합니다. –

5

GCC를 사용하는 경우 libstdc++이 C++ 라이브러리입니다. 출처는 gcc.gnu.org입니다. coutsrc/c++98/globals_io.cc의 58 행에 정의되어 있습니다.

2

std::cout은 함수가 아니며 표준 출력에 연결된 std::ostream(interface description)의 인스턴스입니다.

당신이 사용하는 경우 GCC/된 libstdC++, 폭발

+0

더 나은 : [gcc.gnu.org/git/?p=gcc.git&a=search&h=HEAD&st=grep&s=\bcout\b&sr=1](http://gcc.gnu.org/git/?p=gcc. git & a = search & h = HEAD & st = grep & s = \ bcout \ b & sr = 1) – kennytm