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

Я готов поспорить, исходный код будет гореть глаза. – chris

+0

может быть, я просто хочу посмотреть, как это работает. Мне хотелось бы сравнить printf и cout внутри. – Tebe

+5

'std :: cout' не является функцией, это объект. В стороне, попробуйте удачу с [libC++] (http://libcxx.llvm.org/) в iostream.cpp. – Xeo

ответ

5

cout не является частью STL, поэтому вы не найдете источник для cout в источнике STL.

Возможно, вам захочется найти источник для вашей стандартной библиотеки C++, которая была основана на STL, но также содержит iostreams. Где это зависит от того, какую платформу вы используете.

+0

хорошо, хорошо, как я вижу здесь http://www.cplusplus.com/reference/. Заголовок cout является ostream. Я не могу найти реализацию cout в ostream. Не могли бы вы рассказать, как его найти? Я искал слово «cout», и у меня это было только в комментариях. – Tebe

+0

@shbk: Алан ссылается на то, что стандартная библиотека C++ и STL - это разные вещи. Тем не менее, многие многие люди называют стандартную библиотеку C++ «STL», поскольку она была создана как копия библиотеки STL. В исходной библиотеке STL не было потоков. –

+1

@shbk: cout не должен быть в Ostream, он должен быть в iostream. Но, как было сказано в комментариях, cout является объектом, а не функцией. Поэтому поиск cout не собирается рассказывать вам, как это работает. Вам нужно найти свой класс (ostream) и функции этого класса. –

5

Если вы используете GCC, то libstdc++ - это ваша библиотека C++. Его источники можно найти по адресу gcc.gnu.org. cout определяется по строке 58 от src/c++98/globals_io.cc.

2

std::cout не является функцией, это пример std::ostream(interface description), который привязан к стандартным выводам.

Если вы используете GCC/libstdC++, есть взрыв, просматривающие его source code онлайн

+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. мерзавец & а = поиск & ч = ГОЛОВКА & й = Grep & s = \ bcout \ Ъ & SR = 1) – kennytm

Смежные вопросы