Программирование >>  Операторы преобразования типа 

1 ... 185 186 187 [ 188 ] 189 190 191 ... 239


Возврат суммы return sum;

Выглядит гораздо проще, не правда ли? Этой версии функции нужен заголовок <string>, поскольку конструктор класса failure получает в аргументе ссылку на константный объект string. Для конструирования объекта этого типа потребуется определение, а для передачи объявления достаточно заголовка <istream>.

итандартные функции ввода-вывода

Вместо стандартных операторов >> и << для чтения из потока данных и записи в поток данных можно использовать ряд других функций, представленных в этом разделе.

Эти функции предназначены для чтения и записи неформатированных данных (в отличие от операторов << и >>, которые читают и записывают форматированные: данные). Функции при чтении никогда не игнорируют начальные пропуски (в отличие от операторов, которые по умолчанию начальные пропуски игнорируют). Кроме того, в них используется другой принцип обработки исключений: флаг badbit устанавливается, если функция генерирует исключение, причем не важно, кто является источником исключения - сама вызванная функция или исключение генерируется в результате установки флага состояния (см. с. 576). Если в маске исключений установлен флаг badbit, исключение передается дальше. Тем не менее функции неформатированного вывода, как и функции форматированного вывода, создают объект sentry (см. с. 631).

Для передачи ко;шчества символов в этих функциях используется тип sbramsize:

namespace std {

typedef ... streamslze;

Тип streamslze обычно представляет собой знаковую версию size t. Тип является знаковым, потому что он также используется для передачи отрицательных значений.

Функции ввода

в следующих определениях istream обозначает потоковый класс, используемый для чтения. Это может быть класс istream, wistream или любая другая специализация класса шаблона basicjstream. Параметр char обозначает соответствующий тип символов (char для istream, wchar t для wistream). Другие типы и значения, выводимые курсивом, зависят от определения типа символов или класса трактовок, связанного с потоком данных.



В стандартную библиотеку С++ входят несколько функций потоковых классов для чтения последовательностей символов. Возможности этих функций сравниваются в табл. 13.7.

Таблица 13.7. Функции чтения последовательностей символов

Функция

Признак конца чтения

Количество символов

Присоединение завершителя

Возвращаемый тип

get(s, num)

Новая строка (без включения) или конец файла

До num-1

Istream

get(s, num, t)

t (без включения) или конец файла

До num-1

istream

getllne(s, num)

Новая строка (с включением) или конец файла

До num-1

Istream

getline(s, num, t)

t (с включением) или конец файла

До пит-1

istream

read(s, num)

Конец файла

istream

readsome(s, num)

Конец файла

До num

streamsize

int Istream::get О

О Читает следующий символ.

О Возвращает прочитанный символ или EOF.

О В общем слзае возвращаемое значение относится к типу traits::intJype, а EOF - величина, возвращаемая при вызове traits: :eof(). Для istream это соответственно тип int и константа EOF. Следовательно, для istream эта функция соотвег-ствует функциям getchar() и getc() языка С.

О Возвращаемое значение не обязательно относится к типу символов потока данных; оно также может относиться к типу с более широким диапазоном значений. Без этого было бы невозможно отличить EOF от символа с соответствующим значением.

istream istream::get (chare с)

О Присваивает следующий символ аргументу с.

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

istreame Istream: :get (char* str. streamsize count)

istreame istream::get (char* str, streamsize count, char delim)

О Обе формы читают до count-i символов в строку str.

О Первая форма завершает чтение, если следующий читаемый символ является символом новой строки соответствующей кодировки. Для istream это символ \п, а для wistream - символ wchar t(\n) (см. с. 663). В общем случае используется символ widen(\n) (см. с. 602).



О Вторая форма завершает чтение, если следующий читаемый символ является разделителем delim.

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

О Завершающий символ (delim) не читается:

О Символ завершения строки прерывает чтение.

О Перед вызовом необходимо убедиться в том, что размер str достаточен для хранения count символов.

/streams /Stream::getl1ne {cher* str, streamslze count)

istreamSi /stream;;getl1ne {char* str. streamslze count, char delim)

Обе формы идентичны предыдущим функциям get() со следующими исключениями:

□ чтение завершается не перед символом новой строки или delim соответственно, а включая этот символ, то есть символ новой строки или delim будет прочитан, если он встречается среди count-1 символов, но он не сохраняется в str,

□ если прочитанная строка содержит более count-1 символов, функции устанавливают флаг failbit.

istr&ame 1 stream: -.ге&д (char* str, streamslze count)

О Читает count символов в строку str.

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

О Строка str не завершается автоматически символом завершения строки.

О Перед вызовом необходимо убедиться в том, что размер str достаточен для хранения count символов,

О Обнаружение признака конца файла в процессе чтения считается ошибкой, для которой устанавливается бит failbit (вдобавок к флагу eofbit).

streamslze istream::readsome (char* str, streamslze count)

О Читает до count символов в строку str.

О Возвращает количество прочитанных символов.

О Строка str не, завершается автоматически символом завершения строки.

О Перед вызовом необходимо убедиться в том, что размер str достаточен для хранения count символов.

О в отличие от функции read() функция readsomeO читает из потокового буфера все доступные символы (при помощи функции in avail() класса буфера). Например, она может использоваться в ситуациях, когда ввод поступает с клавиатуры или от других процессов, поэтому ожидание нежелательно. Обнаружение конца файла не считается ошибкой, а биты eofbit и failbit не устанавливаются.



1 ... 185 186 187 [ 188 ] 189 190 191 ... 239

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика