te(ios::fail bit); is » d.day:

Автор admin Вторник, 12 мая 2009 11:32

te(ios::fail bit); is » d.day: is » dash; if (dash != ¦-’) is.setstate(ios::fail bit): ts » d.year; return is; } Если установить для потока бит ошибки, все последующие операции с потоком игнорируются до тех пор, пока поток не будет восстановлен (об этом чуть позже). Именно поэтому оператор продолжает читать данные, не проверяя ios::failbit. Такая реализация допускает присутствие пропусков между числами и дефисами в строке даты (так как оператор » по умолчанию игнорирует пропуски при чтении встроенных типов). Следующие строки являются допустимыми для данного оператора: “08-10-2003″ “8-10-2003″ “08 – 10 – 2003″ А вот эти строки недопустимы: “А-10-2003″ // Алфавитные символы запрещены “08^10/2003″ // Разделителями могут быть только дефисы Состояние потока более подробно рассматривается в разделе «Обработка потоковых ошибок» этой главы. Типичное применение Как показывает оператор чтения для класса Date, следует учитывать возможность ошибок при вводе. Если прочитанные данные не соответствуют типу переменной, весь процесс нарушается, и восстановить нормальную работу программы будет нелегко. Кроме того,


Комментарии закрыты.