36.Стандартный ввод-вывод.
Стандартные манипуляторы ввода-вывода
Это следующие манипуляторы:
// Simple manipulators:
ios& oct(ios&); // в восьмеричной записи
ios& dec(ios&); // в десятичной записи
ios& hex(ios&); // в шестнадцатеричной записи
ostream& endl(ostream&); // добавить '\n' и вывести
ostream& ends(ostream&); // добавить '\0' и вывести
ostream& flush(ostream&); // выдать поток
istream& ws(istream&); // удалить обобщенные пробелы
// Манипуляторы имеют параметры:
SMANIP<int> setbase(int b);
SMANIP<int> setfill(int f);
SMANIP<int> setprecision(int p);
SMANIP<int> setw(int w);
SMANIP<long> resetiosflags(long b);
SMANIP<long> setiosflags(long b);
Например,
cout << 1234 << ' '
<< hex << 1234 << ' '
<< oct << 1234 << endl;
напечатает 1234 4d2 2322
и cout << setw(4) << setfill('#') << '(' << 12 << ")\n";
cout << '(' << 12 << ")\n";
напечатает (##12) (12)
Не забудьте включить файл <iomanip.h>, если используете манипуляторы с параметрами.
33.Управление вводом-выводом в С++
C++ имеет целое семейство гибких библиотек функций ввода/вывода. В С++ было введено понятие потоков. С помощью потока cout можно выводить данные в форматированном виде. Для этого используются потоковые функции Width
Precision
Функция width задает ширину поля вывода, общая форма:
сout. width (width of output);
Функция precision определяет количество значащих цифр для чисел с пла-вающей точкой.
сout. precision (number of Digits)
// вывод элементов матрицы
cout << " матрица А:" << endl;
for (int i=0; i < rows; i++)
{
for (int j=0; j{
cout. width (4);
cout. precision (1);
cout << matrix [ i ] [ j ] << " ";
}
cout << endl;
}
cout << endl;
Функция printf.
Printf - стандартный оператор ввода. Эта функция имеет несколько мощных возможностей, и в ряде случаев она оказывается удобнее функции потоков.
Общая форма:
int printf (cout char*format [, argument,...] )
Параметр format является символьным массивом, содержащим выводимый текст. Mассив format может содержать специальные форматирующие символы, которые выполняют преобразование необязательных аргументов при выводе.
- - выравнивать вывод по левому краю поля
+ - всегда выводит знак числа
пробел - выводить пробел перед положительным числом и знак минус перед отрицательным
# - не влияет на вывод десятичных целых чисел, для шестнадцатеричных выводит префикс Ox или OX, перед восьмеричными целыми выводит ноль, деся-тичную точку для вещественных чисел.
Спецификация width определяет минимальное количество выводимых сим-волов. Если необходимо, используются заполнители - пробелы или нули. Когда значение width начинается с 0, printf использует в качестве заполнителей нули, а не пробелы. Если в качестве значения для width используется универсальный символ *, а не число, то printf подставляет на место этого символа значение, кото-рое должно содержаться в списке аргументов. Это значение должно предшество-вать выводимому значению. Ниже приведен пример вывода числа 2, занимающе-го три позиции согласно значению второго аргумента printf:
printf (" % * d ", 3, 2);
Спецификатор precision определяет максимальное количество выводимых цифр. В случае целого числа он определяет минимальное количество выводимых символов. Для precision также можно применить символ *, вместо которого будет подставлено значение из списка аргументов. Это значение точности представле-ния должно предшествовать выводимому значению. Ниже приведен пример вы-вода числа с плавающей точкой 3.3244 с использованием десяти символов, как это задано вторым аргументом printf.
Print (" % 7. * f ", 10, 3.3244);
Символы F, N, h, 1, L являются символами размера, предопределяющими размер по умолчанию. Символы F и N применяются с указателями far и near соот-ветственно символы h, 1, L используются для указания соответственно типов short int, long, long double.
Символом типа данных должен предшествовать форматирующий символ %.
// Программа, использующая PRINTF для форматированного вывода
# include
int. main ( )
{ int anint = 67;
unsegned char a byte = 128;
float a sisnal = 388.0;
char a char = "G";
double a double = 1.130e + 00 ;
Printf (" %3d + %2d = %3d (n" a Byte, anInt, a Byte + anInte");
Printf (" вывод вещественного числа / n");
Printf (" % 6.4 f / % 64 IF = % 7.5 IF / n , a signal, a Double, a Signale / a Double);
Printf ("вывод вещественного числа в экспоненциалъной форме / n");
Printf (" % 6.4e / % 6.4le = % 7.5le / n", a Signle, a Double, a Signle / a Double);
Printf ("вывод вещественного числа / n");
Printf ((" % 6.4g / % 6.4lg = % 7.5Ig / n, "a Signle, a Double, a Signle / a Double);
Printf (" Символ в переменной величине символа : % c / n", a char);
Printf ( ASСII коде для % с ig % d / n", a char, a char );
Return 0;
}
Пример вывода программы.
28+67= 195
Вывод в формате вещественного числа:
355.000 /113.0000=3.14159
Вывод вещественного числа в экспоненциальной форме:
3.5500e+002/1.1300e+002=3.14159e+00
Вывод вещественного числа
355/113=3.1416
- 99. Типы диаграмм языка uml
- 98. Унифицированный язык моделирования uml.
- 100. Диаграмма классов (class diagram).
- Концептуальная точка зрения — диаграмма классов описывает модель предметной области, в ней присутствуют только классы прикладных объектов;
- Точка зрения спецификации — диаграмма классов применяется при проектировании информационных систем;
- Точка зрения реализации — диаграмма классов содержит классы, используемые непосредственно в программном коде (при использовании объектно-ориентированных языков программирования).
- 102. Компонентно-ориентированное проектирование
- Объектно-ориентированное проектирование на основе иерархии классов.
- 93. Гетерогенные контейнеры adt шаблонов
- Компонентные классы как основа систем визуального программирования.
- Построение каркасов приложений в среде современных систем программирования.
- Производные классы: наследование.
- Термин наследование и применение к классам и их характеристикам
- Создание объекта производного класса.
- Расширение производного класса.
- Создание объекта производного класса и вызов конструкторов
- Производные классы: полиморфизм.
- Множественное наследование в классе, порождённом от нескольких родительских классов-предков.
- Производные классы: полиморфная функция
- Иерархия классов
- 39.Простые манипуляторы для управления потоком
- Прядок вызова конструкторов в производных классах
- Виртуальные базовые классы.
- Порядок построения виртуальных базовых классов.
- 25. Указатель на абстрактный класс.
- 28.Технология объектно-ориентированного программирования.
- Интерфейс пользователя и абстрактный класс.
- 35.Предопределенные объекты-потоки.
- 29. Применение шаблонов классов и шаблонов функций.
- 30.Объекты класса и указатели на объекты класса.
- 31.Члены данных объекта и указатели на члены данных класса.
- 32.Указатели на функции-члены класса и указатели на статические члены данных.
- 36.Стандартный ввод-вывод.
- 34.Создание и организация взаимодействие потоков ввода-вывода.
- 37.Методы позиционирования потоков.
- 38.Способы управления форматом выходных данных.
- 42.Организация ввода-вывода для пользовательского типа
- 40.Параметризованные манипуляторы и форматирующие функции.
- 41.Состояния потока.
- 43.Методы опроса и установки состояния потока.
- 44.Обработка ошибок в потоке через определение и установку состояния потока.
- 45.Последовательность действий при создании ostream.
- 46.Открытие и закрытие файла.
- 47.Методы ввода-вывода.
- 13.Преобразование типов в производных классах.
- 14.Разрешение области видимости в производных классах
- 15.Виртуальные функции.
- 16.Нестатические компонентные функции класса.
- 17.Применение виртуальных функций.
- 18.Вызов виртуальных функций в конструкторе.
- 19.Вызов полиморфных функций базового класса.
- 20.Вызов полиморфных функций через базовые классы.
- 21.Вызов виртуальной функции через таблицу виртуальных методов.
- 22.Ограничения на использование виртуальных функций.
- 23.Чистая виртуальная функция.
- 24.Абстрактный класс и его использование.
- 80.Контейнер объектов List
- 82.Контейнеры шаблонов fds (Fundamental Data Structures).
- 76.Класс итераторов объектов: внешние и внутренние итераторы.
- 81.Контейнер объектов Stack
- 71.Контейнерные классы объектов: понятие контейнерного класса.
- 72.Итераторы в контейнерных классах объектов как друзья класса.
- 48.Бинарные файлы.
- 49.Чтение бинарных файлов.
- 50.Запись в бинарные файлы.
- 51.Инициализация потоков с помощью конструктора.
- 52.Текстовые файлы для ввода-вывода.
- 60.Дружественные шаблоны.
- 53.Форматирование в памяти с использованием потоков strstream.
- 54.Шаблон класса.
- 69.Механизм обработки исключений.
- 56.Создание шаблонного класса.
- 57.Шаблон функции, объявление.
- 61.Функциональное замыкание при разработке приложений.
- 58.Запись шаблона функции с несколькими обобщенными аргументами.
- 65.Исключение как статический объект.
- 64.Объектно-ориентированный подход к обработке исключений.
- 66.Генерации исключения.
- 85.Гомогенные и гетерогенные контейнеры шаблонов fds.
- 63.Использование конструкторов и деструкторов в роли «вступления» и «заключения».
- 67.Операторы throw и catch.
- 68.Обработчик исключений.
- 70.Понятие контролируемого блока при обработке исключений.
- 84.Способы хранения элементов в контейнерах шаблонов fds.
- 83.Вектора и списки в контейнере шаблонов.
- Стандартные контейнеры библиотеки stl
- 86.Fds контейнеры шаблонов векторов
- 62.Функциональное замыкание через наследование.
- 87.Fds контейнеры шаблонов списков
- 89.Способы реализации и префиксы имен adt-контейнеров шаблонов.
- 88.Контейнеры шаблонов adt (Abstract Data Types) и их классификация.
- 90.Типы adt-контейнеров шаблонов.
- 91.Массивы adt-контейнеров шаблонов.
- 92.Стеки adt-контейнеров шаблонов.
- 78.Контейнер объектов Array
- 74.Класс контейнеров объектов: разбиение контейнеров на группы.
- 77.Иерархия классов итераторов объектов
- 79.Контейнер объектов SortedArray
- 73.Библиотека контейнерного класса структур данных.