Читать «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> — шаблонные контейнеры ассоциативных массивов, связывающие ключ с одним и с несколькими значениями,