Ввод-вывод данных

Под потоком данных понимается абстракция, представляющая некоторое устройство ввода или вывода. Чаще всего поток представляется бесконечной последовательностью символов, в которую можно записывать символы или извлекать символы из неё. Потоки обычно ассоциируются с физическим устройством или источником символов: клавиатурой, мышью, файлом и т.д.

Стандартная библиотека С++ включает в себя библиотеку, предназначенную для работы с потоками данных – iostream. Эта библиотека предоставляет следующие элементы:

  • Базовые шаблонные классы. Эти классы предлагают большую часть функциональности библиотеки, независящую от типов данных. В качестве параметров шаблонов классов выступают тип символов (char_type) и дополнительные свойства типов символов (traits).

  • Инстанциированные шаблонные классы – в первом в качестве параметра типа символов используется тип char, во втором – wchar_t.

  • Стандартные объекты. Эти объекты представляют собой стандартные потоки ввода/вывода. Они представлены такими объектами как cin, cout, cerr, clog (а также wcin, wcout, wcerr и wclog)

  • Манипуляторы – глобальные функции, используемые для управления потоком. Они могут быть использованы совместно с операторами извлечения из потока (<<) и выталкивания в поток (>>).

Наиболее часто из библиотеки iostream используются стандартные объекты, а также классы предназначенные для работы с файлами и строками.

  • cin - объект класса istream, представляющий собой стандартный поток ввода данных. По умолчанию данные считываются с клавиатуры. Для считывания данных из входного потока обычно используется оператор >>. В этом случае данные считываются в указанную переменную до пробельного символа. Объявлен в заголовочном файле iostream.

  • cout - объект класса ostream, представляющий собой стандартный поток вывода данных. По умолчанию данные выводятся на экран. Для вывода данных на экран обычно используется оператор <<. Объявлен в заголовочном файле iostream.

  • ifstream - класс, предназначенный для чтения данных из файла. Объявлен в заголовочном файле f_stream_.

  • ofstream - класс, предназначенный для запись данных в файл. Объявлен в заголовочном файле f_stream_.

  • istringstream - класс, предназначенный для чтения данных из строки. Объявлен в заголовочном файле sstream.

  • ostringstream - класс, предназначенный для записи данных в файл. Объявлен в заголовочном файле sstream.

методы, определенные в классе istream (ifstream)

метод

синтаксис

пояснение

operator >>

оператор чтения данных из входного потока

get

int get(); istream& get ( char& c ); istream& get ( char* s, streamsize n ); istream& get ( char* s, streamsize n, char delim ); istream& get ( streambuf& sb); istream& get ( streambuf& sb, char delim );

считывание символа (символов) из потока.

getline

istream& getline (char* s, streamsize n); istream& getline (char* s, streamsize n, char delim );

чтение набора символов. символы читаются из потока до конца строки (символ '\n') или пока их количество не станет равно n.

peek

int peek ( );

читает символ из потока, но не извлекает его.

read

istream& read ( char* s, streamsize n );

читает блок данных из потока длины n в буфер s. Считанные данные не проверяются на наличие конца строки.

good

bool good ( ) const;

Проверка на состояние потока. Значение true возвращается при отсутствии ошибок потока.

eof

bool eof ( ) const;

Проверка на состояние потока. Значение true возвращается при достижении конца потока.

fail

bool fail ( ) const;

Проверка на состояние потока. Значение true возвращается при ошибке чтения-записи и логической ошибке операции ввода/вывода.

bad

bool bad ( ) const;

Проверка на состояние потока. Значение true возвращается при ошибке чтения-записи.

Last updated