Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 [ 188 ] 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239

В стандартную библиотеку С++ входят несколько функций потоковых классов для чтения последовательностей символов. Возможности этих функций сравниваются в табл. 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 (с включением) или конец файла

До num-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() и getcO языка С.

О Возвращаемое значение не обязательно относится к типу символов потока данных; оно также может относиться к типу с более широким диапазоном значений. Без этого было бы невозможно отличить 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, streamsize count)

istreamSi /stream;;getline {char* str. streamsize count, char delim)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



streamsize 7stream;:gcount () const

О Возвращает количество символов, прочитанных последней операцией неформатированного ввода.

istream /stream::ignore С)

istreame istream:-.ignore (streamsize count)

istream istream:[ignore (streamsize count, int delim)

О Все формы извлекают символы из потока данных и игнорируют их.

О Первая форма игнорирует один символ.

О Вторая форма игнорирует до count символов.

О Третья форма игнорирует до count символов и прекращает работу тогда, когда будет извлечен и проигнорирован символ delim.

О Если значение count равно std::numeric limits<std::streamsize>::max(), то есть максимальному значению типа std::streamsize (см. с. 72), функция игнорирует все символы до тех пор, пока не будет обнаружен ограничитель delim или конец файла.

О Все формы возвращают объект потока данных. О Примеры:

□ игнорирование остатка строки:

cin.ignore(numeric limits<std: :streamsize>: :max(), Лп):

□ игнорирование всех оставшихся символов cin:

ci п. ignore(numeric l imits<std;: streamsize>::max());

int istream: :peek ()

О Возвращает следующий считываемый из потока данных символ без его извлечения. Символ считывается следующей операцией чтения (если не изменится позиция ввода).

О Если дальнейшее чтение невозможно, возвращает EOF.

О EOF - значение, возвращаемое traits::eofO. Для класса istream это константа EOF.

istream 7stream::unget О istreame stream;:putback {char c)

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

О Различия между функциями unget и pushback() заключаются в том, что putback() проверяет, был ли передаваемый символ с последним считанным символом.

О Если символ не удается вернуть или функция putback() пытается вернуть другой символ, устанавливается флаг badbit, что может привести к выдаче соответствующего исключения (см. с. 576).

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



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 [ 188 ] 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239