Алгоритмизации
Скачать 1.15 Mb.
|
ГЛАВА 16. Переход к ООППри переходе от языка Си к языку С++ в стандартANSIбыли введены дополнительные механизмы, которые позволили в конечном итоге создать среду для разработки программ в объектно-ориентированном стиле. Рассмотрим некоторые из них. Потоковыйввод-выводПоток – это абстрактное понятие, которое относится к любому переносу данных от источника к приемнику. Потоки С++ обеспечивают надежную работу как со стандартными (stdin, stdout), так и с определенными пользователями типами данных. Поток определяется как последовательность байт, не зависящая от конкретного устройства. Для ввода-вывода в языке С++ используются два объекта класса iostream: cin(класс istream), cout(класс ostream) и две переопределенные операции побитового сдвига. Для их работы необходимо подключить заголовочный файл iostream.h. Формат записи операций помещениявпоток<< (вывод на экран) и извлеченияизпотока>> (ввод с клавиатуры) следующий: cout<< IDпеременной; cin>> IDпеременной; Стандартный поток вывода coutпо умолчанию связан со стандартным устройством вывода stdout (дисплей монитора), а ввода cin – со стандартным устройством ввода stdin, т.е. клавиатурой. Приведем пример: #include void main (void) { int i, j, k; cout << “ Hello! ” << endl; // «end line» – переход на новую строку cout << “ Input i, j ”; cin >> i >> j ; k = i + j ; cout << “ Sum i , j = “ << k << endl; } Управление выводомВ стандарте языка Си ANSI ввод-вывод данных осуществляется при помощи стандартных библиотечных функций. Управление выводом осуществляется при помощи использования форматов и управляющих символов. Для форматирования и управления выводом данных в потоке введен механизм манипуляторов – специальных функций для модификации работы потока, предназначенных для форматирования данных, как при выводе, так и в оперативной памяти. ИспользованиеманипуляторовМанипуляторы– специальные функции, возвращающие модифицированные данные потока. В большинстве случаев их использование позволяет форматировать данные, как при выводе, так и в оперативной памяти. Для их использования необходимо вместо файла iostream.hподключить заголовочный файл iomanip.h (манипуляторы для вывода потоками). Рассмотрим работу некоторых манипуляторов на конкретном примере. #include { int a= 157; double b = 1.55555; cout << setw(10) << a<< endl; /* Манипулятор setw(n) – устанавливает ширину поля, т.е. nпозиций, для вывода объекта. На экране объект абудет выводиться с8-й позиции, первые 7 позиций – пустые: 157 (заполнение пробелами неиспользуемой части). Действует только для следующего за ним объекта. */ cout << setw(10) << setfill(‘z’) << a<< endl; /* Манипулятор setwfill(kod) – устанавливает заполнитель пробелов, задан- ный символом или его кодом (можно было указать122 – код символа 'z'). На экране: zzzzzzz157. Действует до изменения или отмены setwfill(0) .*/ cout << oct << a << endl; /* Манипуляторoct– выполняет преобразование объекта в8-ричную форму представления. На экране: 235 */ cout << hex << a << endl; // hex– преобразует объект в 16-ричную форму. На экране: 9d cout << dec << a << endl; // dec– преобразует обратно в 10-тичную. На экране: 157 cout << b << endl; // На экране: 1.55555 cout << setprecision(3) << b << endl; /* setprecision(n) – устанавливает n значащих цифр после запятой с учетом точки или без нее, в зависимости от системы программирования. На экране: 1.56 или 1.556 */ return 0; } |