Разделы презентаций


Лекция № 6 по дисциплине Объектно-ориентированное программирование на тему:

Содержание

Потоки ввода-вывода В С++ ввод-вывод данных производится потоками байтов. Поток – это последовательность байтов. При операциях ввода байты направляются от устройства (клавиатуры, дисковода, сетевой платы) в ОП. Файл заголовка содержит основную

Слайды и текст этой презентации

Слайд 1Лекция № 6 по дисциплине «Объектно-ориентированное программирование» на тему: Классы ввода-вывода в С++

Лекция № 6 по дисциплине «Объектно-ориентированное программирование» на тему:  Классы ввода-вывода в С++

Слайд 2Потоки ввода-вывода
В С++ ввод-вывод данных производится потоками байтов.
Поток

– это последовательность байтов.
При операциях ввода байты направляются от

устройства (клавиатуры, дисковода, сетевой платы) в ОП.

Файл заголовка содержит основную информацию, необходимую операциям потокового ввода-вывода.
Заголовок содержит информацию, необходимую для управления форматируемым вводом-выводом
Потоки ввода-вывода В С++ ввод-вывод данных производится потоками байтов. Поток – это последовательность байтов. При операциях ввода

Слайд 3Функции библиотеки iostream
int good () возвращает 1, если

ошибок не обнаружено
int eof () возвращает 1,

если поток находится в состоянии "конец файла"
int fail () возвращает 1, если обнаружена восстановимая ошибка ввода-вывода
int bad () возвращает 1, если обнаружена невосстановимая ошибка ввода-вывода
int clear () сбрасывает состояние ошибки ввода-вывода
int precision (int i) устанавливает точность вывода чисел с плавающей точкой
int width (int i) устанавливает ширину поля вывода
Функции библиотеки iostream int good ()  возвращает 1, если ошибок не обнаружено int eof ()

Слайд 4Пример
#include
int i;
char buff[80];
do{
 if (cin.fail())

cin.clear(); // сброс состояния //ошибки
 cout

и символьную строку:";
cin >> i;
 if (cin.fail())
  {   cout << "Нужно ввести число";
cin.sync();
  continue;  }
Пример #include int i;char buff[80];  do{   if (cin.fail()) cin.clear(); // сброс состояния //ошибки   cout

Слайд 5Продолжение примера
cin >> setw(sizeof(buff)+1) >> buff;
if (cin.fail())
 {   cout

<< "Вы ввели число:" << i << "\n"
 << "Вы ввели строку:" << buff << "\n";
}
Продолжение примера cin >> setw(sizeof(buff)+1) >> buff;if (cin.fail())   {   cout

Слайд 6Манипуляторы ввода-вывода
Манипуляторы позволяют менять режимы операций ввода-вывода непосредственно в

выражениях внесения в поток или извлечения из потока.
Например, можно ограничить

размер буфера cin, применяя функцию width():
cin.width(sizeof(buff)); cin >> buff;
Используя манипулятор setw(), можно определить размер буфера так
cin >> setw (sizeof (buff)+1) >> buff;
Манипуляторы ввода-вывода Манипуляторы позволяют менять режимы операций ввода-вывода непосредственно в выражениях внесения в поток или извлечения из

Слайд 7Стандартные манипуляторы библиотеки iostream
Существует два вида манипуляторов ввода-вывода: параметризованные

и непараметризованные.
dec устанавливает базу для преобразования чисел к 10-ичному формату,


hex 16-ичный формат
ws пропуск начальных пробелов
ends выводит нулевой символ
endl выводит признак конца строки
setfill (int ch) Устанавливает символ-заполнитель
setiosflags (int f) устанавливает флаги потока
resetiosflags (int f) сбрасывает флаги потока

Стандартные манипуляторы библиотеки iostream Существует два вида манипуляторов ввода-вывода: параметризованные и непараметризованные.dec устанавливает базу для преобразования чисел

Слайд 8Флаги потока
left выравнивание по левому краю


right выравнивание по правому краю
showbase

выводить показатель базы
showpoint выводить десятичную точку для чисел с плавающей точкой
uppercase 16-ричные большие буквы
showpos показать "+" для положительных целых чисел
scientific установить экспоненциальную форму для чисел с плавающей точкой
fixed установить формат чисел с фиксированной плавающей точкой

Флаги потока left    выравнивание по левому краю right   выравнивание по правому краю

Слайд 9Пример манипулятора
ostream & right(ostream &s)
{  s

setiosflags(ios::right);
  return s;
}

Функция-манипулятор изменяет биты флагов потока, переданного

ей в качестве аргумента

cout << setw(20) << right<< 1234 << endl;
Пример манипулятора ostream & right(ostream &s) {  s

Слайд 10Файловые и строковые потоки
При создании выходных файловых потоков вначале

создается объект для буферизации типа filebuf, а затем этот объект

связывается с новым объектом типа ostream для последующего вывода в этот новый объект.
Пример.
filebuf mybuff; // создаем буферный объект
// увязывем этот буфер с файлом output для вывода
mybuff.open("output", ios::out);
ostream mycout(&mybuff); // новый потоковый объект
mycout <<12<mybuff.close();
Файловые и строковые потоки При создании выходных файловых потоков вначале создается объект для буферизации типа filebuf, а

Слайд 11Пример ввода из файла
int i;
// сразу создается буферизованный потоковый

//объект, связанный с файлом input
ifstream mycin("input");
mycin >> i;

Если программе

будут использованы файловые потоки, то необходимо подключить заголовочный файл fstream.h.
Если будут применяться строковые потоки, то нужно подключить заголовочный файл strstream.h.

Слайд 12Примеры со вводом-выводом строк
char mybuff[128];
ostrstream mycout (mybuff, sizeof(mybuff));
mycout

123

"123";
istrstream mycin (mybuff, sizeof(mybuff));
mycin >> i;
Примеры со вводом-выводом строк char mybuff[128];ostrstream mycout (mybuff, sizeof(mybuff));mycout i;

Слайд 13Функции бесформатного ввода-вывода
Бесформатный ввод-вывод выполняется функциями read класса istream и

write класса ostream
Пример использования бесформатного ввода-вывода.
#include
int main() {
const int

size=80;
char buffer[size];
cin.read(buffer,20);
cout.write(buffer, cin.gcount());
cout<return 0;
}
Функции бесформатного ввода-выводаБесформатный ввод-вывод выполняется функциями read класса istream и write класса ostream Пример использования бесформатного ввода-вывода.#includeint

Слайд 14Часто применяемые функции потока
Пропуск символов при вводе.
istream& istream::ignore(int n,

int d = EOF) — извлекает символы из потока, пока

не встретит ограничитель d или пока не извлечет n символов.
Заглядывание вперед.
int istream::peek( ) — возвращает значение очередного символа, не извлекая его из потока.
Возврат символа в поток.
istream& istream::putback( ) — возвращает символ во входной поток, как в стек
Позиционирование потока
istream& istream::seekg(long pos);
ostream& ostream::seekg(long pos);
Определение текущей позиции потока.
long istream::tellg( );
long ostream::tellp( );
Часто применяемые функции потока Пропуск символов при вводе.istream& istream::ignore(int n, int d = EOF) — извлекает символы

Слайд 15Ошибки потоков ввода-вывода
Бит входного потока eofbit устанавливается, когда в

потоке встречается конец файла.Вызов cin.eof() возвращает true, если в cin

встретился конец файла.
Бит failbit устанавливается, если в потоке происходит ошибка форматирования, но символы при этом не теряются. Функция fail() сообщает об этой ошибке.
Бит badbit устанавливается, если произошла ошибка, приведшая к потере данных.
Бит goodbit устанавливается, если для потока не установлен ни один из битов eofbit, failbit или badbit.

Функция rdstate() возвращает состояние потока. Например, вызов cout. rdstate() возвратит состояние потока cout, и затем можно проверить флаги eofbit, failbit, badbit, goodbit.
Ошибки потоков ввода-вывода Бит входного потока eofbit устанавливается, когда в потоке встречается конец файла.Вызов cin.eof() возвращает true,

Слайд 16Пример
#include
int main() {
int x;
cout

0 0 0 0 1
cin>>x; // введем символ вместо целого

числа
cout<“ ”<cin.clear();
return 0;
}
Пример #includeint main() {int x;cout

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика