istream-функции C++

Istream Funkcii C

Термин «поток» в C++ описывает поток символов между программным потоком и вводом-выводом. Потоковые классы C++ необходимы для ввода и вывода действий на устройствах и файлах ввода-вывода. Эти классы предназначены для управления вводом и выводом программы и имеют определенную функциональность.

Иерархия потокового класса

Класс C++ состоит из методов, необходимых для управления содержащимися в нем данными.

float, double и class — это типы данных, похожие на int. Уникальная переменная с классом в качестве типа данных называется объектом C++. Предопределенные специальные объекты «cin» и «cout» имеют различные классы в качестве типов данных.



Данные, записываемые в «cout» или считываемые из «cin», являются примерами потоков данных в или из программ на C++. В настоящее время мы рассматриваем следующие четыре класса для этого:



Стрим это
Этот входной поток может служить любой цели. Иллюстрацией istream является cin.



Острим
Это выходной поток с несколькими вариантами использования. Ostreams бывают формы cout и cin.

Если поток
Это поток входных файлов.

потока
Это поток выходных файлов. Наследование — это понятие, которое широко используется в объектно-ориентированном программировании, например в C++, где некоторые классы приобретают характеристики других уже созданных классов. Затем классы-предки становятся специализациями самих себя за счет включения новых функций.



Если класс потока
С ifstream можно обращаться так же, как с istream, чем он и является.

Потокового класса
Аналогично функционированию ifstreams, но с выводом вместо ввода, ofstream представляет собой выходной файловый поток. Поток ofstream используется так же, как cout, после создания, открытия и проверки на отсутствие ошибок.

Иос класс
От этого класса произошли все потоковые классы. Входные и выходные потоки — это два разных типа.

Он определяет части потока, которые не зависят от состояния ввода или вывода потока в базе ios.

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

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

Мы узнали, что оператор извлечения (>>) будет использоваться для получения данных из входного потока.

РУЧЕЙ

В языке программирования C++ входной поток обрабатывается классом istream. Ввод читается и понимается как последовательность символов с использованием этих объектов входного потока. Ввод обрабатывается cin.

Классы участников

istream:: часовой
Класс, который выполняет множество задач и каждый раз выполняется процедура ввода. Его деструктор не обязан выполнять какие-либо действия. Однако реализации могут выполнять дополнительные задачи запуска или очистки в потоке, совместно используемом всеми операциями ввода, путем создания и уничтожения объектов-сторожей.

Функции

istream::gcount
Дает количество символов, полученное в результате последнего неформатированного действия ввода объекта. Процедуры неформатированного ввода — get, getline, ignore, peek, read, read some, putback и unget — изменяют значение, возвращаемое этой функцией. Однако имейте в виду, что вызовы peeks, putback или unget не извлекают никаких символов. В результате счетчик всегда будет возвращать 0.

istream::получить
Одиночный символ берет один символ из потока. Символ либо устанавливается в качестве значения аргумента, либо возвращается (первая подпись) (вторая подпись).

Строка C: если символ-разделитель присутствует, он не удаляется из входной последовательности, а сохраняется как следующий символ, который нужно извлечь из потока, если он присутствует.

istream::getline
Удаляет символы из потока как неформатированные входные данные и сохраняет их как c-строку в переменной «s» до тех пор, пока извлеченный символ не станет символом-разделителем или в «s» не будет записано «n» символов. Кроме того, метод прекратит извлечение символов, если достигнет конца файла.

Внутри функция создает объект перед доступом к входной последовательности. Наконец, он убивает объект перед возвратом, извлекая символы из связанного с ним объекта буфера потока (при условии, что все в порядке), как если бы выполнялся один из его методов-членов, sbumpc или sgetc.

istream::игнорировать
Символы берутся из входной последовательности и отбрасываются по одному до тех пор, пока либо не будет удалено «n» символов, либо один из них не будет равен разделителю. Кроме того, если достигнут конец файла, функция останавливает извлечение символов. Функция устанавливает флаг «eofbit», если достигает этой точки слишком рано (до извлечения n символов или обнаружения разделителя).

Перед доступом к входной последовательности функция внутренне строит объект-сторож (с noskipws будет true). Наконец, перед возвратом он убивает объект sentry, извлекая символы из связанного с ним объекта буфера потока (при условии, что все в порядке), как если бы выполнялся один из его методов-членов: sbumpc или sgetc.

istream::оператор>>
Оператор извлечения (>>) применяет этот оператор к входному потоку. Она имеет слишком много членов как функция.

Арифметический тип

Символы извлекаются из потока и последовательно анализируются для представления значения правильного типа, которое затем сохраняется как значение «val». Перед доступом к входной последовательности функция внутренне создает объект-сторож (noskipws будет ложным). Если все в порядке, он запускает num get::get для завершения процессов извлечения и синтаксического анализа, одновременно изменяя флаги внутреннего состояния потока. Часовой объект в конечном итоге уничтожается, прежде чем уйти.

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

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

Вызывается pf (*this), где pf может быть манипулятором. Манипуляторы — это подпрограммы, созданные специально для вызова при вызове этого оператора. Эта процедура не влияет на входную последовательность, и никакие символы не извлекаются.

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

Перед доступом к входной последовательности функция внутренне создает объект-сторож. Затем он вызывает sputbackc(c) для связанного с ним объекта потокового буфера (если все в порядке). Часовой объект в конечном итоге уничтожается, прежде чем уйти.

istream:: читать
Чтение блока данных:

Символы «n» берутся из потока и затем сохраняются в массиве, на который указывает «s». Эта функция просто копирует блок данных без проверки содержимого данных или добавления нулевого символа в конце.

Внутри функции сначала создается сторожевой объект перед доступом к входной последовательности. Наконец, перед возвратом он убивает объект sentry, извлекая символы из связанного с ним объекта буфера потока (при условии, что все в порядке), как если бы выполнялся один из его методов-членов: sbumpc или sgetc.

Вызов подсчета членов вернет общее количество символов, которые эта функция правильно прочитала и сохранила.

istream:: читабельный
Эта функция зависит от внутренней работы конкретного объекта буфера потока, связанного с потоком, поведение которого в значительной степени определяется реализацией для стандартных классов.

Внутри функции сначала создается сторожевой объект перед доступом к входной последовательности. Затем (в случае успеха) он вызывает функцию-член в объекте буфера потока avail, чтобы определить, сколько символов теперь доступно, прежде чем вызывать «sbumpc» для извлечения до этого количества символов (или sgetc). Часовой объект в конечном итоге уничтожается, прежде чем уйти.

istream::seekg
Позиция во входной строке определяет, где следующий символ будет извлечен из входного потока. Перед чтением входной последовательности функция внутренне создает сторожевой объект. Затем (если все в порядке) он делает один из двух вызовов соответствующего объекта буфера потока: pubseekpos (1) или pubseekoff (2), (если есть). Наконец, он уничтожает сторожевой пункт и уходит.

istream::синхронизация
Выровняйте входной буфер:

Синхронизирует управляемую входную последовательность буфера связанного потока. Конкретная реализация объекта потокового буфера, подключенного к потоку, определяет специфику операции.

istream::рассказ
Получите позицию входной последовательности:

Он дает текущую позицию символа во входном потоке. Затем функция возвращает -1. Если элемент терпит неудачу, он возвращает true.

Он возвращает rdbuf()->pubseekoff, если нет (0,cur,in). Часовой объект в конечном итоге уничтожается, прежде чем уйти.

istream::unget
Удалить персонажа:

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

Не член

оператор>> (istream)
Оператор извлечения (>>) обеспечивает форматированный ввод с помощью этого действия при применении к входному потоку.

Один символ: последовательность символов берет из нее следующий символ и сохраняет его как значение «c». Процесс извлечения символов из is и сохранения их в s в виде c-строки останавливается (если ширина не равна нулю) при обнаружении пробельного символа или при извлечении (width()-1) символов.

Извлечение rvalue: позволяет извлекать объекты istream из rvalue, что дает тот же результат, что и извлечение из lvalue: вызывает is>>Val.

Пример 1

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

#include <иопоток>
с использованием пространство имен станд. ;
инт главный ( )
{
инт Нет ;
cout << 'Пожалуйста, введите номер ' ;
принимать пищу >> Нет ;
cout << 'Введенное значение: ' << Нет << ' \n ' ;
}

Мы бы включили заголовочный файл . Далее мы будем использовать пространство имен «std» в стандартном пространстве имен. Мы бы вызвали функцию main(). В этом методе будет объявлена ​​переменная с именем «no». Для этой переменной представлен тип данных «int». Термин «int» является аббревиатурой целого числа. После этого используется оператор cout. Эта команда печатает строку.

Пользователь будет вводить любое случайное значение после того, как этот текст будет отображен на экране. Тогда можно было бы использовать оператор «cin». Эта команда требует, чтобы пользователь указал значение. Введенный пользователем номер будет сохранен в переменной. Значение, предоставленное пользователем, будет отображаться на экране с помощью команды «cout».

Пример 2

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

#include
с использованием пространство имен станд. ;

инт главный ( )

{

уголь имя [ 125 ] ;
cout << 'Введите ваше имя' << конец ;


принимать пищу >> ws ;

принимать пищу . получить линию ( имя, 125 ) ;

cout << имя << конец ;

возвращаться 0 ;

}

Мы бы включили заголовочный файл . Далее мы будем использовать стандартное пространство имен как «std». Мы бы вызвали функцию main(). В этом методе мы объявим переменную. Эта переменная содержит тип данных «char». Затем используется оператор cout. Эта команда показывает текст «Введите ваше имя» на экране. После вывода этого текста на экран пользователь вводил любое имя. Затем мы будем использовать оператор «cin».

Эта команда получает значение от пользователя. Предоставленное имя будет сохранено в переменной «ws». Здесь мы снова воспользуемся командой «cin». Внутри этой команды применяется функция getline(). Эта функция содержит параметр, который включает имя, введенное пользователем, и длину имени. Команда «cout» будет использоваться для отображения имени, предоставленного пользователем. Для завершения кода будет использоваться команда «return 0».

Вывод

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