![]() ![]() ![]() |
|||||
![]() |
![]() |
![]() |
![]() |
![]() |
|
Учебное пособие по курсу "Программирование на языках высокого уровня" |
2.2 Организация ввода/выводаПотоковый ввод/выводОдин из основных механизмов, который делает программу полезной является ввод/вывод. Все языки программирования имеют такой механизм. Среди операторов и ключевых слов нет ввода/вывода. Потому что в языке С++ ввод/вывод реализован в виде библиотеки. И вообще многие механизмы, которые делают язык С++ таким мощным реализованы в библиотеках (стандартные, специализированные, персональные). В С++ используется механизм потокового ввода/вывода. Поток - механизм преобразования значений различного типа в последовательность символов (вывод) и наоборот (ввод), в значение переменной. Вывод: Помещение (направление) данных в поток вывода осуществляется с помощью оператора << который также иногда называют экстрактор (extractor). Конечно, можно создать свой поток вывода, но обычно достаточно стандартных потоков:
Переменную любого встроенного типа можно вывести используя следующую запись:
Можно определить операторы потокового ввода/вывода и для созданных абстрактных типов данных. Ввод: Ввод данных из потока осуществляется аналогично с использованием обратного оператора >> (inserter):
Переменную любого временного типа можно ввести (считать) из потока:
Для использования стандартной библиотеки нужно включить ее описание в текст программы. Это делается с помощью директивы препроцессору #include.
Форматированный ввод/выводВ С++ используется механизм потокового ввода/вывода. Поток - механизм преобразования значений различного типа в последовательность символов (вывод) и наоборот (ввод)
Примеры, которые приводились выше и ввод/вывод, который вы использовали на практических занятиях до сих пор, обычно называют неформатированным выводом. Часто программисту нужно более детализированное управление. Управление осуществляется для каждого потока отдельно, т.е. если вы определили какой-то формат для потока ввода, то на поток вывода он не подействует. Более того, управление влияет только на следующее выводимое значение.
Управление можно организовать используя манипуляторы потока, которые вставляются между объектами (записываемыми или читаемыми) и тем самым изменяют состояние потока (формат вывода значений): для вывода целых чисел
для вывода чисел с плавающей точкой
для вывода логических переменных
Дополнительно можно определить ширину вывода переменных в количестве символов:
А также задать символ для заполнения
Можно определить место размещения заполнителей. По умолчанию как видите заполнители размещаются до значения. Это аналогично записи:
Можно наоборот:
Важные манипуляторы:
Это лишь основные манипуляторы, которые вы можете использовать для форматирования. С остальными познакомьтесь самостоятельно:
Файловые потокиДля первых программ стандартных потоков ввода/вывода будет достаточно, но по мере усложнения программ не обойтись без работы с файлом, которая в С++ осуществляется так же на основе механизма потоков.
Обратите внимание на двойной слэш \ в имени файла. Это все из-за того, что \ - экранирующий символ. По умолчанию ввод и вывод данных в поток осуществляется в текстовом режиме. Для того, чтобы данные выводились в двоичном режиме следует использовать следующую запись:
По умолчанию файл открываемый для вывода создается (если он создан), а если существует, то очищается. Для того чтобы открыть файл для добавления:
Можно создать файловый поток, который запускает и ввод и вывод:
|