
Вопросы для защиты лабораторной работы по потоковым классам
Иерархия классов потоков ввода-вывода.
Для поддержки потоков в C++ стандартная библиотека содержит иерархию классов, построенную на основе двух базовых классов:
ios – базовый класс, содержащий общие для ввода/вывода поля и методы
streambuf – обеспечивает буферизацию потоков и их взаимодействие с физическими устройствами.
От этих базовых классов наследуются классы istream и ostream для входных и выходных потоков соответственно. Эти потоки являются базовыми для iostream, который позволяет реализовывать двунаправленные потоки. Ниже в иерархии находятся файловые и строковые потоки:
isstrinstream – класс входного строкового потока
osstringstream – класс выходного строкового потока
stringstream – класс двунаправленного строкового потока
ifsteam – класс входных файловых потоков
ofstream – класс выходных файловых потоков
fstream – класс двунаправленных файловых потоков
Перечислить параметризованные манипуляторы потоков ввода-вывода. Заголовочные файлы классов потоков ввода-вывода.
setbase(int) – задает основание системы счисления;
resetiosflags(long) – сбрасывает флаги состояния поток, биты которых установлены в параметре.
setiosflags(long) – устанавливает флаги состояния потока биты которых в параметре равны единице.
setfill(int) – устанавливает символ заполнитель с кодом, равным значению параметра.
setprecision(int) – устанавливает максимальной количество цифр в дробной части для вещественных чисел в форме с фиксированной точкой, либо общее число значащих цифр для чисел в форме с мантиссой и порядком.
setw(int) – устанавливает максимальную ширину поля вывода.
<iostream.h> - Cтандартный потоки
(istream, ostream, iostream)
<fstream.h> - Файловые потоки
(ifstream(char *name, int mode = ios::in);
ofstream(char *name, int mode = ios::out);
fstream(char *name, int mode = ios::in [ios::out] );)
<sstream.h> - Строковые потоки
(explicit istringstream (int mode = ios::in);
explicit istringstream (const string &name, int mode = ios::in);
explicit ostringstream (int mode = ios::out);
explicit ostringstream (const string & name, int mode = ios::out);
explicit stringstream (int mode = ios::in | ios::out );
explicit stringstream (const strin &name, int mode = ios::in | ios::out);)
+<strstream.h> - форматированный ввод-вывод в память (похоже на обработку файлов, но операции ввода-вывода проводятся с символьными массивами, а не файлами).
(istrstream, ostrstream, strstream)
Перечислить способы установки точности представления вещественных чисел в потоке вывода.
1) нет.
2) setprecision(int) – устанавливает максимальной количество цифр в дробной части для вещественных чисел в форме с фиксированной точкой, либо общее число значащих цифр для чисел в форме с мантиссой и порядком.
stream << setprecision(8);
3) int ios:: precision(int) - устанавливает значение точности представления при выводе вещественного числа и возвращает старое значение точности (меняет поле int x_precision – количество цифр в дробной части при выводе вещественных чисел с фиксированной точкой, либо общее количество значащих цифр при выводе числа с мантиссой и порядком.
stream.precision(8);
В потоковых классах форматирование данных можно осуществить тремя способами, а именно, с помощью: