Справочник по C/C++
Стандартные библиотеки С и C++

Ни в С, ни в C++ нет ключевых слов, обеспечивающих ввод-вывод, обрабатывающих строки, выполняющих различные математические вычисления или какие-нибудь другие полезные процедуры. Все эти операции выполняются за счет использования набора библиотечных функций, поддерживаемых компилятором. Существует два основных вида библиотек: библиотека С-функций, которая поддерживается всеми компиляторами С и C++, и библиотека классов C++, которая, разумеется, годится только для языка C++. Подробнее об этих библиотеках речь пойдет ниже в настоящем справочнике.

Прежде чем ваша программа сможет использовать какую-нибудь библиотеку функций, она должна включить соответствующий заголовок. Вообще-то, под заголовками понимают заголовочные файлы, но на самом деле это необязательно должны быть именно файлы. Компилятор может внутренне предопределять содержимое заголовка. Однако для всех практических нужд стандартные С-заголовки содержатся в файлах, которые соответствуют их именам. Ниже перечислены стандартные заголовки, определенные стандартом С89 и поправкой 1995 года (Amendment 1).

Заголовок    Что поддерживает
Макрос assert()
Обработка символов
Сообщения об ошибках
Значения с плавающей точкой, зависящие от конкретной реализации компилятора
Макросы, соответствующие различным операторам, например && и ^. Добавлено в 1995 году (Поправка 1)
Различные ограничения, зависящие от конкретной реализации компилятора
Функция setlocale()
Различные определения, используемые библиотекой math
Нелокальные переходы
Значения сигналов
Списки аргументов переменной длины
Распространенные константы
Ввод-вывод файлов
Смешанные объявления
Функции обработки строк
Функции системного времени и даты
Функции обработки многобайтовых слов и двухбайтовых символов. Добавлено в 1995 году (Поправка 1)
Функции классификации многобайтовых слов и двухбайтовых символов. Добавлено в 1995 году (Поправка 1)

В следующей таблице перечислены заголовки, добавленные стандартом С99.

Заголовок Что поддерживает
Арифметика комплексных чисел
Флажки (признаки) состояния и другие аспекты среды обработки чисел с плавающей точкой
Стандартный переносимый набор имен целочисленных типов; также функции, обрабатывающие целые числа самого широкого формата
Логические типы данных; также определяет макрос bool, способствующий достижению совместимости с языком C++
Стандартный переносимый набор имен целочисленных типов. Этот файл включен в заголовок
Стандартный переносимый набор имен целочисленных типов. Этот файл включен в заголовок

В современной спецификации для языка C++ заголовки указываются с использованием стандартных имен заголовков, которые не имеют расширения .h (т.е. заголовки C++ не означают имена файлов). Это просто стандартные идентификаторы, которые компилятор может обрабатывать так, как считает нужным (т.е. заголовок может быть преобразован в имя файла, но это вовсе необязательно). С++-заголовки приведены ниже. Указанная в скобках аббревиатура STL означает прямую или косвенную связь данного заголовка со стандартной библиотекой шаблонов (Standard Template Library).

Заголовок C++  Что поддерживает
Различные операции на контейнерах (STL)
Битовые множества (STL)
Комплексные числа
Двухсторонние очереди (STL)
Обработка исключительных ситуаций
Работа с файловыми потоками для чтения и записи в один и тот же файл
Различные объекты-функции (STL)
Манипуляторы ввода-вывода
Классы ввода-вывода нижнего уровня
Упреждающие объявления для систем ввода-вывода
Стандартные классы ввода-вывода
Обработка входных потоков
Доступ к содержимому контейнеров (STL)
Различные ограничения реализации
Линейные списки (STL)
Информация, связанная с традициями конкретных стран или географических регионов
Отображения (ключи и значения) (STL)
Распределение памяти с помощью распределителей памяти (STL)
Выделение памяти с помощью оператора new
Универсальные операции над числами
Обработка выходных потоков
Очереди (STL)
Множества (STL)
Обработка строковых потоков
Стеки(SLT)
Стандартные исключительные ситуации
Буферизированная обработка потоков
Стандартный класс string (STL)
Динамическая информация о типе
Шаблоны общего назначения (STL)
Операции над массивами, содержащими значения
Векторы (динамические массивы) (STL)

В языке C++ также определены следующие заголовки, которые соответствуют С-заголовкам.

 
 

В стандартном языке C++ вся информация, связанная со стандартной библиотекой, определена в пространстве имен std. Следовательно, для получения прямого доступа к этим элементам после включения нужного заголовка вам придется использовать следующий оператор using.

using namespace std;

В качестве альтернативного варианта, чтобы не вносить целую библиотеку в глобальное пространство имен, каждый библиотечный идентификатор можно квалифицировать с помощью обозначения std::, например std::cout. Однако в этом случае квалификация каждого имени будет выглядеть весьма громоздко.


Совет программисту

Если вы используете более старый компилятор C++, то может оказаться, что он не поддерживает С++-заголовки нового стиля или команду namespace. В этом случае вам придется использовать заголовки более старого традиционного стиля. Это значит, что к тем же самым именам заголовков нужно добавить расширение .h, после чего они будут напоминать С-заголовки. Например, так выглядит включение заголовка при использовании традиционного подхода.

#include 

При использовании заголовка в традиционном стиле все имена, определенные этим заголовком, размещаются в глобальном пространстве имен, а не в пространстве имен std. Следовательно, в этом случае оператор using не требуется