ios base c что это

Урок №209. Функционал классов ostream и ios. Форматирование вывода

Обновл. 15 Сен 2021 |

На этом уроке мы рассмотрим функционал классов ostream и ios в языке С++.

Форматирование вывода

Есть два способа управления параметрами форматирования вывода:

флаги — это логические переменные, которые можно включить/выключить;

манипуляторы — это объекты, которые помещаются в поток и влияют на способ ввода/вывода данных.

Для включения флага используйте функцию setf() с соответствующим флагом в качестве параметра. Например, по умолчанию C++ не выводит знак + перед положительными числами. Однако, используя флаг std::showpos, мы можем это изменить:

Также можно включить сразу несколько флагов, используя побитовый оператор ИЛИ ( | ):

Чтобы отключить флаг, используйте функцию unsetf():

Многие флаги принадлежат к определенным группам форматирования. Группа форматирования — это группа флагов, которые задают аналогичные (иногда взаимоисключающие) параметры форматирования вывода. Например, есть группа форматирования basefield.

Флаги группы форматирования basefield:

oct (от англ. «octal» = «восьмеричный») — восьмеричная система счисления;

dec (от англ. «decimal» = «десятичный») — десятичная система счисления;

hex (от англ. «hexadecimal» = «шестнадцатеричный») — шестнадцатеричная система счисления.

Эти флаги управляют выводом целочисленных значений. По умолчанию установлен флаг std::dec, т.е. значения выводятся в десятичной системе счисления. Попробуем сделать следующее:

Ничего не работает! Почему? Дело в том, что setf() только включает флаги, он не настолько умен, чтобы одновременно отключать другие (взаимоисключающие) флаги. Следовательно, когда мы включаем std::hex, std::dec также включен и у него приоритет выше. Есть два способа решения данной проблемы.

Во-первых, мы можем отключить std::dec, а затем включить std::hex:

Теперь уже результат тот, что нужно:

Второй способ — использовать вариацию функции setf(), которая принимает два параметра:

первый параметр — это флаг, который нужно включить/выключить;

второй параметр — группа форматирования, к которой принадлежит флаг.

При использовании этой вариации функции setf() все флаги, принадлежащие группе форматирования, отключаются, а включается только передаваемый флаг. Например:

Язык C++ также предоставляет еще один способ изменения параметров форматирования: манипуляторы. Фишка манипуляторов в том, что они достаточно умны, чтобы одновременно включать и выключать соответствующие флаги. Например:

В общем, использовать манипуляторы гораздо проще, нежели включать/выключать флаги. Многие параметры форматирования можно изменять как через флаги, так и через манипуляторы, но есть и такие параметры форматирования, которые изменить можно либо только через флаги, либо только через манипуляторы.

Полезные флаги, манипуляторы и методы

Флаг:

Манипуляторы:

1 0
true false
1 0
true false

Флаг:

Манипуляторы:

Флаг:

uppercase — если включен, то используются заглавные буквы.

Манипуляторы:

uppercase — используются заглавные буквы.

nouppercase — используются строчные буквы.

1.23457e+007
1.23457E+007
1.23457e+007
1.23457E+007

Флаги группы форматирования basefield:

dec — значения выводятся в десятичной системе счисления;

hex — значения выводятся в шестнадцатеричной системе счисления;

oct — значения выводятся в восьмеричной системе счисления.

Манипуляторы:

dec — значения выводятся в десятичной системе счисления;

hex — значения выводятся в шестнадцатеричной системе счисления;

oct — значения выводятся в восьмеричной системе счисления.

Теперь вы уже должны понимать связь между флагами и манипуляторами.

Точность, запись чисел и десятичная точка

Используя манипуляторы (или флаги), можно изменить точность и формат вывода значений типа с плавающей точкой.

Флаги группы форматирования floatfield:

fixed — используется десятичная запись чисел типа с плавающей точкой;

scientific — используется экспоненциальная запись чисел типа с плавающей точкой;

showpoint — всегда отображается десятичная точка и конечные нули для чисел типа с плавающей точкой.

Манипуляторы:

fixed — используется десятичная запись значений;

scientific — используется экспоненциальная запись значений;

showpoint — отображается десятичная точка и конечные нули чисел типа с плавающей точкой;

noshowpoint — не отображаются десятичная точка и конечные нули чисел типа с плавающей точкой;

setprecision(int) — задаем точность для чисел типа с плавающей точкой.

Методы:

precision() — возвращаем текущую точность для чисел типа с плавающей точкой;

precision(int) — задаем точность для чисел типа с плавающей точкой.

Если используется десятичная или экспоненциальная запись чисел, то точность определяет количество цифр после запятой/точки. Обратите внимание, если точность меньше количества значащих цифр, то число будет округлено. Например:

Источник

Работа с файлами в C++. Часть 1 – Библиотека fstream.

Наиболее частые операции следующее:

Это не все возможности, которые предоставляет библиотека fstream. Рассматривать все сейчас мы не будем, поскольку их круг применения достаточно узок. Познакомимся с вышеперечисленными. Начнем с класса чтения.

Класс ifstream

Предоставляет возможности для чтения файлов. Открыть файл можно двумя способами: вызвав метод open() или указав путь к нему в конструкторе. Вам необходимо подготовить текстовый файл, перед тем, как начать набирать код. На диске d создайте папку с именем 1 и в ней создайте файл с расширением txt – “файл.txt”.

Открытие файла в конструкторе выглядит так:

Так мы просим открыть файл txt с именем файл.txt, который лежит в папке с названием 1, а папка находится на диске d.

Использование метода open() удобно, если программист не хочет сразу привязываться к файлу. Вдруг нужно свойство класса или глобальную переменную, ну а открывать файл уже потом. Если же нужно открыть файл внутри некой функции, поработать с ним и закрыть, то можно прописать путь к файлу прямо в конструкторе. В общем зависит от ситуации.

Читайте также:  что делать если звенит сирена

Открыв файл, желательно прописать проверку: открылся ли он? Так как есть ряд причин, по которым файл может не открыться, а мы этого не увидим. Например, файла с указанным именем нет в прописанной папке или путь указан неверно. Можно пойти двумя путями: проверить переменную файла в логическом выражении (применив оператор “!”, к примеру) или использовать метод is_open() :

Так все отработает нормально и файл откроется:

Теперь попробуйте вписать название папки не 1, а 2 ifstream file ( «d:\\ color : #ff0000;»>2 \\файл.txt”); и снова запустите программу. Так как папки с указанным именем мы не создавали, то и файл, естественно, не может быть открыт:

Второй вариант проверки с использованием метода is_open() :

Если файл не открыт – желательно обработать ошибку. Как правило, если вся работа программы связана с файлом пишут некое сообщение в консоль, и ставят выход из программы. При серьезных ошибках принято возвращать некий код выполнения (число), который будет характеризовать ту или иную ошибку. Коды для каждого вида ошибок автор программы может придумывать свои. Один из способов обработки ошибок в программе мы рассматривали в статье Исключения в С++.

Если файл успешно открыт, из него можно производить чтение.

Оператор считывания >>

Считает вещественное, целое и строку. Считывание строки закончится, если появится пробел или конец строки. Стоит отметить, что оператор >> применяется к текстовым файлам. Считывание из бинарного файла производить лучше всего с помощью метода read().

Кстати этот оператор достаточно удобен, если стоит задача разделить файл на слова:

Методы getline() и get()

Считывание целой строки до перевода каретки производится так же как и в iostream методом getline(). Причем рекомендуется использовать его переопределеную версию в виде функции, если считывается строка типа string:

Если же читать нужно в массив символов char[], то либо get() либо getline() именно как методы:

Метод read()

Похож на предыдущий пример?

Собственно тут тот же результат – считается указанное количество символов. Исключение только в том, что нельзя указать разделитель. read() применяется для неформатированного ввода. Призван в первую очередь читать бинарные файлы. Поскольку текстовый файл – частный случай бинарного, этот метод вполне применим и к текстовому файлу.

Метод close()

Закрывает файл. Даже добавить нечего. Единственная пожалуй ремарка – от того, что файл, открытый для чтения, не будет закрыт этим методом как правило хуже не станет. Очень редки ситуации, когда открытый для чтения файл портится, если завершить программу не закрывая файл. Связана эта порча прежде всего с нестандартными устройствами типа стримеров на магнитной ленте или каких нибудь потоковых хитрых промышленных контроллерах, но по феншую стоит запомнить – открытый файл должен быть закрыт. Это считается хорошим тоном.

Метод eof()

Проверяет не достигнут ли конец файла. Т.е. можно ли из него продолжать чтение. Выше пример с считкой слов оператором >> как раз использует такую проверку.

Метод seekg()

Производит установку текущей позиции в нужную, указываемую числом. В этот метод так же передается способ позиционирования:

Источник

std:: ios_base

Compiler support
Freestanding and hosted
Language
Standard library headers
Named requirements
Feature test macros (C++20)
Language support library
Concepts library (C++20)
Diagnostics library
General utilities library
Strings library
Containers library
Iterators library
Ranges library (C++20)
Algorithms library
Numerics library
Localizations library
Input/output library
Filesystem library (C++17)
Regular expressions library (C++11)
Atomic operations library (C++11)
Thread support library (C++11)
Technical specifications
Symbols index
External libraries

The class ios_base is a multipurpose class that serves as the base class for all I/O stream classes. It maintains several kinds of data:

Typical implementation holds member constants corresponding to all values of fmtflags, iostate, openmode, and seekdir shown below, member variables to maintain current precision, width, and formatting flags, the exception mask, the buffer error state, a resizeable container holding the callbacks, the currently imbued locale, the private storage, and a static integer variable for xalloc().

Источник

ios_base Class

The class describes the storage and member functions common to both input and output streams that do not depend on the template parameters. (The class template basic_ios describes what is common and is dependent on template parameters.)

An object of class ios_base stores formatting information, which consists of:

Two extensible arrays, with elements of type long and void pointer.

Members

Constructors

Typedefs

Enums

Constants

Functions

Operators

Requirements

Header:

Namespace: std

event

Specifies event types.

Remarks

Example

event_callback

Parameters

_Base
The stream in which the event was called.

_I
A user-defined number.

Remarks

Example

failure

The class failure defines the base class for the types of all objects thrown as exceptions, by functions in the iostreams library, to report errors detected during stream buffer operations.

Читайте также:  хореоатетоз что это такое

Remarks

Example

flags

Sets or returns the current flag settings.

Parameters

fmtfl
The new fmtflags setting.

Return Value

The previous or current fmtflags setting.

Remarks

See ios_base::fmtflags for a list of the flags.

The first member function returns the stored format flags. The second member function stores fmtfl in the format flags and returns its previous stored value.

Example

fmtflags

Constants to specify the appearance of output.

Remarks

The type is a bitmask type that describes an object that can store format flags. The distinct flag values (elements) are:

In addition, several useful values are:

getloc

Returns the stored locale object.

Return Value

The stored locale object.

Example

imbue

Changes the locale.

Parameters

_Loc
The new locale setting.

Return Value

The previous locale.

Remarks

Example

Creates the standard iostream objects when constructed.

Remarks

The nested class describes an object whose construction ensures that the standard iostream objects are properly constructed, even before the execution of a constructor for an arbitrary static object.

ios_base

Constructs ios_base objects.

Remarks

The (protected) constructor does nothing. A later call to basic_ios:: init must initialize the object before it can be safely destroyed. Thus, the only safe use for class ios_base is as a base class for class template basic_ios.

iostate

The type of constants that describe the state of a stream.

Remarks

The type is a bitmask type that describes an object that can store stream state information. The distinct flag values (elements) are:

iword

Parameters

Remarks

If idx is negative or if unique storage is unavailable for the element, the function calls setstate (badbit) and returns a reference that might not be unique.

Example

openmode

Describes how to interact with a stream.

Remarks

The opening mode for several iostream objects. The flag values are:

Constant Effect
app Seek to the end of the stream before each write
ate Seek to the end of the stream immediately after open
binary Open in binary mode. (See fopen for a description of binary mode.)
in Open for reading
out Open for writing
trunc delete the contents of the file after open

Example

operator=

The assignment operator for ios_base objects.

Parameters

Return Value

The object being assigned to.

Remarks

precision

Specifies the number of digits to display in a floating-point number.

Parameters

_Prec
The number of significant digits to display, or the number of digits after the decimal point in fixed notation.

Return Value

The first member function returns the stored display precision. The second member function stores _Prec in the display precision and returns its previous stored value.

Remarks

Floating-point numbers are displayed in fixed notation with fixed.

Example

pword

Parameters

Remarks

If index is negative, or if unique storage is unavailable for the element, the function calls setstate (badbit) and returns a reference that might not be unique.

Example

register_callback

Specifies a callback function.

Parameters

pfn
Pointer to the callback function.

idx
A user-defined number.

Remarks

Example

seekdir

Specifies starting point for offset operations.

Remarks

The type is an enumerated type that describes an object that can store the seek mode used as an argument to the member functions of several iostream classes. The distinct flag values are:

Example

Sets the specified flags.

Parameters

_Mask
The flags to turn on.

_Unset
The flags to turn off.

Return Value

The previous format flags

Remarks

The first member function effectively calls flags(_Mask | _Flags) (set selected bits) and then returns the previous format flags. The second member function effectively calls flags(_Mask & fmtfl, flags &

_Mask) (replace selected bits under a mask) and then returns the previous format flags.

Example

sync_with_stdio

Ensures that iostream and C run-time library operations occur in the order that they appear in source code.

Parameters

Return Value

Previous setting for this function.

Remarks

unsetf

Turns the specified flags off.

Parameters

_Mask
The flags that you want to turn off.

Remarks

The member function effectively calls flags(

Example

width

Sets the length of the output stream.

Parameters

_Wide
The desired size of the output stream.

Return Value

The current width setting.

Remarks

The first member function returns the stored field width. The second member function stores _Wide in the field width and returns its previous stored value.

Example

xalloc

Specifies that a variable is part of the stream.

Return Value

The static member function returns a stored static value, which it increments on each call.

Remarks

Источник

Класс ios_base

Этот класс описывает хранилище и функции-члены общие для обоих потоков (ввода и вывода), не зависящих от параметров шаблона. (Шаблон класса basic_ios описывает общие параметры и зависит от параметров шаблона.)

Объект класса ios_base хранит сведения о форматировании, состоящие из следующих элементов:

Два расширяемых массива с элементами типа long и void указателя.

Объект класса ios_base также хранит сведения о состоянии потока в объекте типа iostate и стеке обратного вызова.

Члены

Конструкторы

Определения типов

Перечисления

Константы

Функции

Операторы

Требования

Заголовок: iOS>

Пространство имен: std

event

Задает типы событий.

Комментарии

Пример

event_callback

Параметры

_Base
Поток, в котором был вызов события.

_I
Определенное пользователем число.

Комментарии

Пример

failure

Комментарии

Пример

flags

Задает или возвращает текущие параметры флага.

Параметры

Возвращаемое значение

Комментарии

ios_base::fmtflags Список флагов см. в разделе.

Первая функция-член возвращает сохраненные флажки формата. Вторая функция-член сохраняет fmtfl во флажках формата и возвращает свое ранее сохраненное значение.

Пример

fmtflags

Константы для определения внешнего вида выходных данных.

Комментарии

Тип — это тип битовой маски, описывающий объект, который может хранить флаги формата. Ниже перечислены значения различных флагов (элементы).

Кроме того, ниже приведено несколько полезных значений:

getloc

Возвращает сохраненный объект языкового стандарта.

Возвращаемое значение

Сохраненный объект языкового стандарта.

Пример

imbue

Изменяет языковой стандарт.

Параметры

_Loc
Новое значение языкового стандарта.

Возвращаемое значение

Предыдущий языковой стандарт.

Комментарии

Пример

Создает стандартные iostream объекты при создании.

Комментарии

Вложенный класс описывает объект, построение которого гарантирует, что стандартные iostream объекты должным образом созданы, даже перед выполнением конструктора для произвольного статического объекта.

ios_base

Создает объекты ios_base.

Комментарии

(Защищенный) конструктор ничего не делает. Последующий вызов basic_ios:: basic_ios:: должен инициализировать объект, прежде чем его можно будет безопасно уничтожить. Таким образом, единственное безопасного использования класса ios_base является базовым классом для basic_iosшаблона класса.

iostate

Тип констант, описывающих состояние потока.

Комментарии

Тип — это тип битовой маски, описывающий объект, который может хранить данные о состоянии потока. Ниже перечислены значения различных флагов (элементы).

iword

Параметры

Комментарии

Если idx является отрицательным или если для элемента недоступно уникальное хранилище, функция вызывает setstate (badbit) и возвращает ссылку, которая может быть неуникальной.

Пример

openmode

Описывает процесс взаимодействия с потоком.

Комментарии

Режим открытия для нескольких iostream объектов. Значения флагов:

Константа Действие
app Поиск в конце потока перед каждой записью
ate Поиск в конце потока сразу после открытия
binary Открыть в двоичном режиме. ( fopen Описание двоичного режима см. в разделе).
in Открыть для чтения
out Открыть для записи
trunc удалить содержимое файла после открытия

Пример

operator=

Оператор присваивания для объектов ios_base.

Параметры

Возвращаемое значение

Объект, которому выполняется присваивание.

Комментарии

precision

Задает количество цифр для отображения числа с плавающей запятой.

Параметры

_Prec
Количество значащих цифр при отображении, или количество цифр после десятичной запятой в фиксированной нотации.

Возвращаемое значение

Первая функция-член возвращает сохраненное количество цифр для отображения. Вторая функция – член сохраняет _Prec в точности экрана и возвращает свое предыдущее сохраненное значение.

Комментарии

Числа с плавающей запятой отображаются в фиксированной нотации с помощью fixed.

Пример

pword

Параметры

Комментарии

Функция-член возвращает ссылку на индекс элемента расширяемого массива с элементами типа Pointer. Все элементы эффективно присутствуют и изначально хранят нулевой указатель. Возвращенная ссылка является недопустимой после следующего вызова для pword объекта, после того, как объект изменен вызовом метода basic_ios:: copyfmt или после уничтожения объекта.

Если индекс является отрицательным или для элемента недоступно уникальное хранилище, функция вызывает (badbit) и возвращает ссылку, которая может быть неуникальной.

Пример

register_callback

Задает функцию обратного вызова.

Параметры

pfn
Указатель на функцию обратного вызова.

idx
Определенное пользователем число.

Комментарии

Пример

seekdir

Задает начальную точку для операций смещения.

Комментарии

Тип является перечислимым типом, описывающим объект, который может хранить режим поиска, используемый в качестве аргумента для функций-членов нескольких iostream классов. Ниже перечислены значения различных флагов.

Пример

Задает указанные флаги.

Параметры

_Mask
Флажки, которые нужно включить.

_Unset
Флаги, которые необходимо отключить.

Возвращаемое значение

Предыдущие флаги формата

Комментарии

Первая функция-член фактически вызывает flags(_Mask | _Flags) (устанавливает выбранные биты), а затем возвращает предыдущие флаги формата. Вторая функция-член фактически вызывает flags(_Mask & fmtfl, flags &

_Mask) (заменяя выбранные биты в маске), а затем возвращает предыдущие флаги формата.

Пример

sync_with_stdio

Гарантирует, что iostream и операции с библиотекой времени выполнения C выполняются в том порядке, в котором они отображаются в исходном коде.

Параметры

Возвращаемое значение

Предыдущий параметр для этой функции.

Комментарии

unsetf

Отключает указанные флаги.

Параметры

_Mask
Флаги, которые необходимо отключить.

Комментарии

Функция-член фактически вызывает flags(

_Mask & flags) (очищает выбранные биты).

Пример

width

Задает длину потока вывода.

Параметры

_Wide
Нужный размер выходного потока.

Возвращаемое значение

Текущее значение ширины.

Комментарии

Первая функция – член возвращает ширину сохраненного поля. Вторая функция – член сохраняет _Wide ширину поля и возвращает свое предыдущее сохраненное значение.

Пример

xalloc

Указывает, что переменная является частью потока.

Возвращаемое значение

Статическая функция-член возвращает сохраненное статическое значение, которое увеличивается при каждом вызове.

Комментарии

Источник

Читайте также:  Что значит щирый по украински
Сказочный портал