На этом шаге мы приведем общие сведения о стандартных функциях ввода-вывода.
Вместо стандартных операторов >> и << для чтения из потока данных и записи в поток данных можно использовать ряд других функций, представленных в этом разделе.
Эти функции предназначены для чтения и записи "неформатированных" данных (в отличие от операторов << и >>, которые читают и записывают "форматированные" данные). Функции при чтении никогда не игнорируют начальные пропуски (в отличие от операторов, которые по умолчанию начальные пропуски игнорируют). Кроме того, в них используется другой принцип обработки исключений: флаг badbit устанавливается, если функция генерирует исключение, причем не важно, кто является источником исключения - сама вызванная функция или исключение генерируется в результате установки флага состояния. Если в маске исключений установлен флаг badbit, исключение передается дальше. Тем не менее функции неформатированного вывода, как и функции форматированного вывода, создают объект sentry.
Для передачи количества символов в этих функциях используется тип streamsize:
namespace std { typedef ... streamsize; . . . . . }
Тип streamsize обычно представляет собой знаковую версию size_t. Тип является знаковым, потому что он также используется для передачи отрицательных значений.
На следующем шаге мы рассмотрим функции ввода.