Презентация Форматирование ввода вывода онлайн

На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Форматирование ввода вывода абсолютно бесплатно. Урок-презентация на эту тему содержит всего 38 слайдов. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Образование » Форматирование ввода вывода



Оцените!
Оцените презентацию от 1 до 5 баллов!
  • Тип файла:
    ppt / pptx (powerpoint)
  • Всего слайдов:
    38 слайдов
  • Для класса:
    1,2,3,4,5,6,7,8,9,10,11
  • Размер файла:
    1.03 MB
  • Просмотров:
    87
  • Скачиваний:
    0
  • Автор:
    неизвестен



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

№1 слайд
Форматирование Форматы
Содержание слайда: Форматирование Форматы ввода-вывода зависят в основном от двух факторов. Первый – специальные форматные флаги, другой – их настройка под национальные стандарты. Класс ios_base содержит ряд переменных, предназначенных для определения форматов ввода-вывода. В частности, эти переменные определяют минимальную ширину поля, точность вывода вещественных чисел и заполнитель. Переменная типа ios::fmtflags содержит флаги конфигурации, которые определяют, нужно ли выводить знак перед положительными числами, должны ли логические значения выводиться в числовом или символьном виде и т.д. Некоторые форматные флаги составляют группы. Определены специальные маски, упрощающие работу с группами. Имеются три стандартные маски: adjustfield = internal | left | right basefield = dec | oct | hex floatfield = fixed | scientific

№2 слайд
Форматирование - функции
Содержание слайда: Форматирование - функции Функции определения форматов

№3 слайд
Форматирование - флаги Флаги
Содержание слайда: Форматирование - флаги Флаги форматирования

№4 слайд
Форматирование флаги
Содержание слайда: Форматирование – флаги (продолжение) Флаги форматирования

№5 слайд
Манипуляторы работы с флагами
Содержание слайда: Манипуляторы работы с флагами Установка и сброс флагов форматирования можно осуществлять при помощи пары манипуляторов: setiosflags(флаги) – установка передаваемых флагов resetiosflags(маска) – сброс флагов, определяемых передаваемой маской. Манипуляторы setiosflags() и resetiosflags() дают возможность соответственно установить или сбросить один или несколько флагов в командах записи или чтения с использованием оператора << или >>. #include <iostream> #include <iomanip> . . . std::cout << resetiosflags(std::ios::adjustfield) ; // Сброс выравнивания std::cout << setiosflags(std::ios::left) ; // Левое выравнивание

№6 слайд
Форматированный ввод-вывод
Содержание слайда: Форматированный ввод-вывод логических данных Флаг boolalpha определяет формат ввода и вывода логических значений – числовой или текстовый. Если флаг не установлен (значение по умолчанию), логические данные представляются в числовом виде. В этом случае false всегда представляется значением О, а true -значением 1. При чтении логических данных в числовом представлении наличие символов, отличных от О и 1, считается ошибкой (для потока данных устанавливается бит failbit). При установке флага логические данные читаются и записываются в тексто-вом представлении. При чтении логического значения строка должна соответ-ствовать текстовому представлению true или false. Строки, представляющие эти значения, определяются состоянием объекта локального контекста. Стандартный объект локального контекста "С" использует для представления логических значений строки "true" и "false". Для удобства работы с этим флагом определены специальные манипуляторы: boolalpha Включает текстовое представление (установка флага ios::boolalpha) noboolalpha Включает числовое представление (сброс флага ios::boolalpha) Следующий фрагмент выводит переменную b сначала в числовом, а затем в текстовом представлении: bооl b; . . . cout << noboolalpha << b << " " << boolalpha << b << endl;

№7 слайд
Ширина поля При выводе
Содержание слайда: Ширина поля При выводе функция width() определяет минимальную ширину поля. Определение относится только к следующему выводимому форматированному полю. При вызове без аргументов width() возвращает текущую ширину поля. При вызове с целочисленным аргументом функция width() изменяет ширину поля и возвращает ее предыдущее значение. Ширина поля не может использоваться для сокращения вывода. То есть максимальную ширину поля задать невозможно. Вместо этого ее придется самостоятельно запрограммировать, например, записав данные в строку и ограничив вывод определенным количеством символов. По умолчанию минимальная ширина равна 0; это означает, что размер поля может быть произвольным. После выполнения любой операции форматированного ввода-вывода восстанавливается ширина поля по умолчанию.

№8 слайд
Заполнитель Функция fill
Содержание слайда: Заполнитель Функция fill() определяет символ, используемый для заполнения промежутков между отформатированным представлением величины и позицией, отмечающей минимальную ширину поля. По умолчанию заполнителем является пробел. Заполнитель остается без изменений до тех пор, пока он не будет модифицирован явно.

№9 слайд
Выравнивание Тип выравнивания
Содержание слайда: Выравнивание Тип выравнивания данных внутри поля определяется тремя флагами, перечисленными в таблице. Эти флаги определяются в классе ios_base вместе с соответствующей маской.

№10 слайд
Манипуляторы ширины,
Содержание слайда: Манипуляторы ширины, заполнения и выравнивания Манипуляторам setw() и setfill() должен передаваться аргумент, поэтому для их использования в программу необходимо включить заголовочный файл <iomanip>.

№11 слайд
Пример использования
Содержание слайда: Пример использования манипуляторов #include <iostream> #include <iomanip> std::cout << std::setw(8) << std::setfill('_') << -3.14 << ' ' << 42 << std::endl; std::cout << std::setw(8) << "sum: " << std::setw(8) << 42 << std::endl; Этот фрагмент выводит следующий результат: ___-3.14 42 ____sum: ______42

№12 слайд
Использование ширины поля при
Содержание слайда: Использование ширины поля при вводе Ширина поля также позволяет задать максимальное количество символов, вводимых при чтении последовательностей символов типа char*. Если значение width() отлично от 0, то из потока данных читаются не более, width() -1 символ. Поскольку обычные С-строки не могут увеличиваться при чтении данных, при их чтении оператором >> всегда следует ограничивать максимальный размер ввода функциями width() или setw(). Пример: char buffer[81]: // Чтение не более 80 символов cin >> setw(sizeof(buffer)) >> buffer; Функция читает не более 80 символов, хотя sizeof(buffer) возвращает 81, поскольку один символ является признаком завершения строки (он присоеди-няется автоматически). Обратите внимание на распространенную ошибку: char* s: cin >> setw(sizeof(s)) >> s: // ОШИБКА ВРЕМЕНИ ВЫПОЛНЕНИЯ Строковые классы позволяют предотвратить подобные ошибки: string buffer: cin >> buffer: // ОК

№13 слайд
Oтображение знака для
Содержание слайда: Oтображение знака для положительных чисел Установка флага ios::showpos означает, что положительные числа должны выводиться со знаком. Если флаг сброшен, то со знаком выводятся только отрицательные числа. По умолчанию положительные числа выводятся без знака. Установка и сброс флага может быть осуществлен при помощи манипуляторов showpos и noshowpos соответственно. std::cout << 123.9 << std::endl; std::cout.setf (std::ios::showpos); std::cout << 123.9 << std::endl; Этот фрагмент выводит следующий результат: 123.9 +123.9

№14 слайд
Система счисления Следующая
Содержание слайда: Система счисления Следующая группа из трех флагов управляет основанием системы счисления, используемой при вводе-выводе целых чисел. Флаги определяются в классе ios_base вместе с соответствующей маской.

№15 слайд
Установка системы счисления
Содержание слайда: Установка системы счисления Существуют два основных способа переключения флагов системы счисления. Сброс одного флага и установка другого: std::cout.unsetf (std::ios::dec); std::cout.setf (std::ios::hex); Установка одного флага с автоматическим сбросом остальных флагов группы: std::cout.setf(std::ios::hex, std::ios::basefield);

№16 слайд
Идентификация системы
Содержание слайда: Идентификация системы счисления Дополнительный флаг showbase выводит числа по стандартным правилам обозначения системы счисления числовых литералов в С/С++. При установке флага ios::showbase восьмеричные числа выводятся с префиксом 0, а шестнадцатеричные числа - с префиксом 0х (или при установленном флаге ios::uppercase - 0Х). Установка и сброс флага ios::showbase может быть выполнена с использованием специальных манипуляторов showbase и noshowbase.

№17 слайд
Вывод символов в верхнем
Содержание слайда: Вывод символов в верхнем регистре Флаг ios::uppercase означает, что буквы в числовых значениях должны выводиться в верхнем регистре. Этот флаг распространяется как на целые числа, записанные в шестнадцатеричном виде, так и на вещественные числа в научной (экспоненциальной) записи. По умолчанию символы выводятся в нижнем регистре. Установка и сброс флага может быть осуществлен при помощи манипуляторов uppercase и nouppercase соответственно. std::cout <<(std::hex) << 0xabc << ' ' << 1.2 << ' ' << (std::scientific) << 1.2 << std::endl; std::cout.setf (std::ios::uppercase); std::cout << 0xabc << ' ' << 1.2 << std::endl; Результат: abc 1.2 1.200000e+000 ABC 1.2 1.200000E+000

№18 слайд
Формат вещественных чисел
Содержание слайда: Формат вещественных чисел Некоторые флаги и переменные управляют выводом вещественных чисел. Флаги, перечисленные в таблице, определяют тип записи (десятичная или научная). Эти флаги определяются в классе ios_base вместе с соответствую-щей маской.

№19 слайд
Формат вещественных чисел -
Содержание слайда: Формат вещественных чисел - 2 По умолчанию ни один из флагов ios::fixed и ios::scientific не установлен. В этом случае запись выбирается в зависимости от выводимого значения. Для этого делается попытка вывести все значащие десятичные цифры (но не более precision()) с удалением начального нуля перед десятичной точкой и/или всех завершающих пробелов, а в крайнем случае - даже десятичной точки. Если precision() разрядов оказывается достаточно, используется десятичная запись; в противном случае - научная запись.

№20 слайд
Примеры форматирования
Содержание слайда: Примеры форматирования вещественных чисел Как и в случае целых значений, флаг ios::showpos служит для принудительного вывода знака положительных чисел. Флаг ios::uppercase указывает, какая буква должна использоваться в научной записи (Е или е).

№21 слайд
Форматы вещественных чисел -
Содержание слайда: Форматы вещественных чисел - манипуляторы Флаг ios::showpoint, тип записи и точность можно задать при помощи манипуляторов, представленных в таблице:

№22 слайд
Общие параметры
Содержание слайда: Общие параметры форматирования skipws - флаг автоматического игнорирования начальных пропусков при чтении данных оператором >>. Флаг ios::skipws устанавливается по умолчанию; это означает, что по умолчанию некоторые операции чтения игнорируют начальные пропуски. Обычно этот флаг удобнее держать установленным. Например, вам не придется специально заботиться о чтении пробелов, разделяющих числа. С другой стороны, это означает, что вы не сможете читать пробелы оператором >>, потому что начальные пропуски всегда игнорируются. Для управления этим флагом существуют манипуляторы skipws (установка) и noskipws (сброс).

№23 слайд
Интернационаnизация Форматы
Содержание слайда: Интернационаnизация Форматы ввода-вывода также адаптируются к национальным стандартам. Функции существующие для этой цели определены в классе ios_base. imbue(loc) - назначение объекта локального контекста. getloc() - получение текущего объекта локального контекста. С каждым потоком данных связывается некоторый объект локального контекста. По умолчанию исходный объект локального контекста создается как копия глобального объекта локального контекста на момент конструирования потока данных. В частности, объект локального контекста определяет параметры форматирования чисел (например, символ, используемый в качестве десятичной точки, или режим числового/строкового представления логических величин). В отличие от аналогичных средств С средства интернационализации стандартной библиотеки С++ позволяют задавать локальные контексты на уровне отдельных потоков данных. Например, такая возможность позволяет выполнять чтение вещественных чисел в американском формате и последующей записи в немецком формате (в котором вместо «десятичной точки» используется запятая).

№24 слайд
Интернационаnизация - При
Содержание слайда: Интернационаnизация -2 При работе с потоками данных часто возникает задача приведения отдельных символов (в первую очередь управляющих) к кодировке потока данных. Для этого в потоках данных поддерживаются функции преобразования: widen(c) – преобразование символа с типа char к кодировке, используемой потоком. narrow(c,def) – преобразование символа с из кодировки, используемой потоком, к типу char (если такого символа не существует, возвращается def). Следующая команда преобразует символ новой строки в кодировку, используемую потоком данных: strm.widen('\n');

№25 слайд
Доступ к файлам Потоки данных
Содержание слайда: Доступ к файлам Потоки данных также используются для работы с файлами. В стандартную библиотеку С++ входят четыре основных шаблона, для которых определены стандартные специализации. Шаблон basic_ifstream< > со специализациями ifstream и wifstream обеспечивает чтение файлов («файловый входной поток данных»). Шаблон basic_ofstream< > со специализациями ofstream и wofstream обеспечивает запись файлов («файловый выходной поток данных»). Шаблон basic_fstream< > со специализациями fstream и wfstream обеспечивает чтение и запись файлов. Шаблон basic_filebuf< > со специализациями filebuf и wfilebuf используется только другими классами файловых потоков данных для выполнения фактических операций чтения и записи символов.

№26 слайд
Иерархия классов файловых
Содержание слайда: Иерархия классов файловых потоков данных .

№27 слайд
Описание классов namespace
Содержание слайда: Описание классов namespace std { . . . template <class charT, class traits = char traits<charT> > class basic_ifstream; typedef basic_ifstream<char> ifstream; typedef basic_ifstream<wchar_t> wifstream; template <class charT, class traits = char traits<charT> > class basic_ofstream; typedef basic_ofstream<char> ofstream; typedef basic_ofstream<wchar_t> wofstream; template <class charT, class traits = char traits<charT> > class basic_fstream; typedef basic_fstream<char> fstream; typedef basic_fstream<wchar_t> wfstream; template <class charT, class traits = char traits<charT> > class basic_filebuf; typedef basic_filebuf<char> filebuf: typedef basic_filebuf<wchar_t> wfilebuf; }

№28 слайд
Достоинства файловых потоков
Содержание слайда: Достоинства файловых потоков Основным достоинством потоковых классов для работы с файлами является автоматизация выполняемых операций. Файлы автоматически открываются во время конструирования и закрываются при уничтожении объекта. Естественно, что эта возможность имеется благодаря соответствующему определению конструкторов и деструкторов. Одно важное обстоятельство, относящееся к потокам данных с поддержкой и чтения и записи, - такие потоки не должны допускать произвольного переключения между чтением и записью!! Чтобы после начала чтения из файла переключиться на запись (или наоборот), необходимо выполнить операцию позиционирования (возможно, с сохранением текущей позиции). Единственное исключение из этого правила относится к чтению с выходом за конец файла; в этой ситуации можно немедленно переходить к записи символов. Нарушение этого ограничения приводит к нежелательным побочным эффектам. Если при конструировании файлового потока данных в аргументе передается С-строка (тип char*), то при этом автоматически делается попытка открыть файл для чтения и/или записи. Признак успеха этой попытки отражается в состоянии потока данных. Следовательно, после конструирования следует проверить состояние потока данных.

№29 слайд
Пример использования файловых
Содержание слайда: Пример использования файловых потоков #include <string> // Строки #include <iostream> // Ввод-вывод #include <fstream> // Файловый ввод-вывод #include <iomanip> / / setw() #include <cstdlib> / / exit() using namespace std; // Опережающие объявления void writeCharsetToFile (const string& filename); void outputFile (const string& filename); int main () { wri teCharsetToFi lе( "charset. out") ; outputFile("charset.out"); }

№30 слайд
Пример использования файловых
Содержание слайда: Пример использования файловых потоков - 2 void writeCharsetToFilе (const string& filename) { // Открытие выходного файла ofstream file(filename.c_str()); // Файл открыт? if (! file) { // NO. abort program cerr << "can't ореп output file \"" << filename << "\"" << endl; exit(EXIT_FAILURE); } // Вывод текущего набора символов for (int i=32; i <256; i++) { file << "value: " << setw(3) << i << " " << "char: " << static_cast<char>(i) << endl; } } // Автоматическое закрытие файла

№31 слайд
По поводу использования
Содержание слайда: По поводу использования файловых потоков В конце обеих функций открытые файлы автоматически закрываются при выходе соответствующих потоков данных из области видимости. Деструкторы классов ifstream и ofstream закрывают файлы, если они остаются открытыми на момент уничтожения объекта. Если файл должен использоваться за пределами области видимости, в которой он был создан, выделите объект из кучи и удалите его позднее, когда надобность в нем отпадет: std::ofstream* fileptr = new std::ofstream(“xyz"); delete fileptr; Вместо последовательного вывода отдельных символов также можно вывести все содержимое файла одной командой, передавая указатель на потоковый буфер файла в аргументе оператора <<: std::cout << file.rdbuf();

№32 слайд
Режимы открытия файлов Флаги
Содержание слайда: Режимы открытия файлов Флаги управления режимами открытия файлов, определены в классе ios_base. Флаги относятся к типу openmode и группируются в битовые маски по аналогии с флагами fmtflags.

№33 слайд
Комментарии по флагам
Содержание слайда: Комментарии по флагам открытия Флаг binary запрещает преобразование специальных символов или символьных последовательностей (например, конца строки или конца файла). В операционных системах типа MS-DOS или OS/2 конец логической строки в тексте обозначается двумя символами (CR и LF). При открытии файла в обычном текстовом режиме (сброшенный флаг binary) символы новой строки заменяются последовательностью из двух символов, и наоборот. При открытии файла в двоичном режиме (с установленным флагом binary) эти преобразования не выполняются. Флаг binary должен использоваться всегда, когда файл не содержит чисто текстовой информации и обрабатывается как двоичные данные. Пример – копи-рование файла с последовательным чтением символов и их записью без моди-фикации. Если файл обрабатывается в текстовом виде, флаг binary не устанав-ливается, потому что в этом случае символы новой строки нуждаются в специ-альной обработке. Флаги объединяются оператором 1. Полученный результат типа openmode может передаваться конструктору во втором аргументе. Cледующая команда открывает файл для присоединения текста в конце: std::ofstream file("abc.out", std::ios::out | std::ios::арр);

№34 слайд
Соответствие по флагам
Содержание слайда: Соответствие по флагам открытия С++ и C Установленный флаг binary соответствует строке с присоединенным символом b, а установленный флаг ate соответствует позиционированию в конец файла немедленно после открытия. Другие комбинации, отсутствующие в таблице (например, trunc l app), недопустимы.

№35 слайд
Функции обслуживания файловых
Содержание слайда: Функции обслуживания файловых потоков Открытие файла для чтения и/или записи не зависит от класса соответствующего объекта потока данных. Класс лишь определяет режим открытия по умолчанию при отсутствии второго аргумента. Это означает, что файлы, используемые только классом ifstream или ofstream, могут открывать-ся для чтения u записи. Режим открытия передается соответствующему классу потокового буфера, который открывает файл. Тем не менее операции, разрешенные для данного объекта, определяются классом потока данных. Для открытия и закрытия файлов, принадлежащих файловым потокам данных, существуют функции : ореn(имя) – открытие файла для потока в режиме по умолчанию; ореn(имя, флаги) – открытие файла для потока в режиме, определяемом переданными флагами; close() – закрытие файлового потока; is_open() – проверка открытия файла. Эти функции используются в основном при создании файловых потоков данных без инициализации.

№36 слайд
Функции обслуживания пример
Содержание слайда: Функции обслуживания – пример (начало) // Заголовочные файлы для файлового ввода-вывода #include <fstream> #include <iostream> using namespace std; /* Для всех файлов. имена которых переданы в аргументах командной строки. * - открыть. вывести содержимое и закрыть файл */ void main (int argc, char* argv[]) { ifstream file; // Перебор аргументов командной строки for (int i=1; i<argc; ++i) { // Открытие файла file.open(argv[i]);

№37 слайд
Функции обслуживания пример
Содержание слайда: Функции обслуживания – пример (окончание) // Вывод содержимого файла в cout char c; while (file.get(c)) { cout.put(c); } // Сброс флагов eofbit и failbit. установленных // при обнаружении конца файла (open ничего такого не делает!!!) file.clear(); // Закрытие файла file.close(); } // На следующий файл из списка аргументов программы }

№38 слайд
Тест с отчетом Каким ключевым
Содержание слайда: Тест с отчетом 2 1) Каким ключевым словом обозначаются встраиваемые функции?

Скачать все slide презентации Форматирование ввода вывода одним архивом: