Читать «QT 4: программирование GUI на С++» онлайн - страница 333

Жасмин Бланшет

Стандартный С++ также включает ряд заголовочных файлов, обеспечивающих ввод—вывод (см. рис. Б.4):

• <fstream> — шаблонные классы, манипулирующие внешними файлами,

• <iomanip> — манипуляторы потоков ввода—вывода, принимающие один аргумент,

• <ios> — шаблонный базовый класс потоков ввода—вывода,

• <iosfwd> — предварительные объявления нескольких шаблонных классов потоков ввода—вывода,

• <iostream> — стандартные потоки ввода—вывода (cin, cout, cerr, ctog),

• <istream> — шаблонный класс, управляющий вводом из буфера потока,

• <ostream> — шаблонный класс, управляющий выводом в буфер потока,

• <sstream> — шаблонные классы, связывающие буферы потоков со строками,

• <streambuf> — шаблонные классы, обеспечивающие буфер для операций ввода—вывода,

• <strstream> — классы для выполнения операций потокового ввода-вывода с массивами символов.

Классы стандартного ввода—вывода проектировались в 80-х годах и обладают излишней сложностью, что сильно затрудняет их понимание, причем настолько, что этой теме были посвящены целые книги. Кроме того, программист остается наедине с ящиком Пандоры неразрешенных проблем, связанных с кодировкой символов и зависимого от платформы двоичного представления элементарных типов данных.

В («Ввод—вывод») представлены соответствующие классы Qt, обеспечивающие ввод—вывод символов в кодировке Unicode, а также большой набор национальных кодировок и абстракцию независимого от платформы хранения двоичных данных. Qt—классы ввода—вывода формируют основу поддержки межпроцессной связи, работы с сетями и XML. Qt—классы двоичных и текстовых потоков можно очень легко расширить для работы с пользовательскими типами данных.

В начале 90-х годов была введена стандартная библиотека шаблонов (Standard Template Library — STL), представляющая собой набор шаблонных классов-контейнеров, итераторов и алгоритмов, которые вошли в стандарт ISO С++ в последний момент. На рис. Б.5 приводится список заголовочных файлов библиотеки STL:

• <algorithm> — шаблонные функции общего назначения,

• <deque> — шаблонный контейнер очереди с двумя концами,

• <functional> — шаблоны, помогающие конструировать и манипулировать функторами,

• <iterator> — шаблоны, помогающие конструировать и манипулировать итераторами,

• <list> — шаблонный контейнер двусвязного списка,

• <map> — шаблонные контейнеры ассоциативных массивов, связывающие ключ с одним и с несколькими значениями,