Ввод-вывод данных
Под потоком данных понимается абстракция, представляющая некоторое устройство ввода или вывода. Чаще всего поток представляется бесконечной последовательностью символов, в которую можно записывать символы или извлекать символы из неё. Потоки обычно ассоциируются с физическим устройством или источником символов: клавиатурой, мышью, файлом и т.д.
Стандартная библиотека С++ включает в себя библиотеку, предназначенную для работы с потоками данных – 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