Поток iostream может пребывать в одном из четырех состояний.
Состояния потока
good() Операции выполнены успешно
eof() Обнаружен конец файла (“end of file”)
fail() Произошло что-то непредвиденное (например, искали цифру, а вме
сто нее обнаружили символ ‘x‘)
bad()
Также на сайте peremena.ru можно узнать много интересного на тему http://www.peremena.ru/
Что означает вообще тема необычные путешествия и перемена про это написано на сайте peremena.ru Спасибо сайту за информацию
Произошло что-то непредвиденное и серьезное (например, ошибка
при чтении данных с диска)
Используя функцию s.exceptions(), программист может потребовать, чтобы поток iostream сгенерировал исключение, если из состояния good() он перешел в другое состояние.
Любая операция, в результате которой поток не находится в состоянии good(), не имеет никакого эффекта; такая ситуация называется “no op”.
Объект класса iostream можно использовать как условие. В данном случае условие является истинным (успех), если поток iostream находится в состоянии good(). Это обстоятельство стало основой для распространенной идиомы, предназначенной для считывания потока значений.
X x; // "буфер ввода" для хранения одного значения типа X while (cin>>x) {
// какие-то действия с объектом x
}
// мы окажемся в этой точке, если оператор >> не сможет прочитать // очередной объект класса X из потока cin
Операции ввода
Почти все операции ввода описаны в заголовке , за исключением операций ввода в объект класса string; эти операции описаны в заголовке :
Форматированный ввод
in >> x Ввод из потока in в объект x по правилам типа объекта x
getline(in,s) Ввод строки из потока in в объект s класса string
Если не указано иное, операция ввода возвращает ссылку на объект класса istream, поэтому можно создавать цепочки таких операций, например cin>>x>>y;.
Неформатированный ввод
x=in.get() Вводит один символ из потока in и возвращает его целочисленное значение
in.get(c) Вводит символ из потока in в переменную c
in.get(p,n)
in.get(p,n,t)
in.getline(p,n)
in.getline(p,n,t) Вводит не более n символов из потока in в массив, начинающийся с позиции p
Вводит не более n символов из потока in в массив, начинающийся
с позиции p; символ t считается признаком конца ввода
Вводит не более n символов из потока in в массив, начинающийся
с позиции p; удаляет признак конца ввода из потока in
Вводит не более n символов из потока in в массив, начинающийся
с позиции p; символ t считается признаком конца ввода; удаляет
признак конца ввода из потока in
in.read(p,n) Вводит не более n символов из потока in в массив, начинающийся
x=in.gcount() с позиции p
x — это количество символов, введенных во время выполнения последней по времени операции неформатированного ввода данных из потока in
Функции get() и getline() помещают после символов, записанных в ячейки p[0] и т.д., число 0 (если символы были введены); функция getline() удаляет признак конца ввода (t) из потока ввода, если он обнаружен, а функция get() этого не делает. Функция read(p,n) не записывает число 0 в массив после считанных символов. Очевидно, что операторы форматированного ввода проще в использовании и менее уязвимы для ошибок, чем операции неформатированного ввода.
Операции вывода
Почти все операции вывода описаны в заголовке , за исключением операции записи в объекты класса string; такие операции описаны в заголовке .
Операции вывода
out << x Записывает объект x в поток out по правилам типа объекта x
out.put(c) Записывает символ c в поток out
out.write(p,n) Записывает символы p[0] ..p[n-1] в поток out
1172
ПРИЛОЖЕНИЕ Б • ОБЗОР СТАНДАРТНОЙ БИБЛИОТЕКИ
Если не указано иное, операции вставки в поток ostream возвращают ссылку на его объекты, поэтому можно создавать цепочки операций вывода, например cout << x<
Опубликовал katy
May 08 2015 11:06:13 ·
0 Комментариев ·
3351 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.