Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lutsik_Yu_A_Obektno_orientir_programmir_na_yaz.pdf
Скачиваний:
63
Добавлен:
11.05.2015
Размер:
4.33 Mб
Скачать

}

7.7. Основные функции классов ios, istream, ostream

Из диаграммы классов ввода−вывода следует, что классы ios, istream, ostream являются базовыми для большинства классов. Класс ios является типом- синонимом для шаблона класса basic_ios, производным от класса ios_base.

template <class E, class T = char_traits<E> >

 

 

 

 

class basic_ios : public ios_base

 

 

 

 

 

 

{public:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Р

 

iostate rdstate() const;

 

 

 

// возвращает текущее состояние потока

 

void clear(iostate state = goodbit); // устанавливает состояние потока в

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

И

 

 

 

 

 

 

 

 

 

 

 

// заданное значение. Состояние потока

 

 

 

 

 

 

 

 

 

 

 

// можно изменить: cin.clear(ios::eofbit)

 

void setstate(iostate state);

 

 

 

 

У

 

 

 

 

 

 

 

 

 

 

bool good() const;

//

true-значение при отсутствии ошибки

 

 

 

bool eof() const;

 

//

true

 

 

 

 

Г

 

 

 

 

 

при достижении конца файла, т.е. при попыт-

 

 

 

 

 

 

 

//

ке выполнить ввод−вывод за пределами файла

 

bool fail() const;

 

//

true

 

 

 

Б

 

 

 

 

 

при ошибке в текущей операции

 

 

 

bool bad() const;

 

//

true

при ошибке

 

 

 

 

 

basic_ostream<E, T> *tie() const;

 

 

 

 

 

 

basic_ostream<E, T> *tie(basic_ostream<E, T> *str);

 

 

 

 

basic_streambuf<E, T> *rdbuf() const; // возвр щает указатель на буфер

 

 

 

 

 

 

 

 

 

 

 

е

а// ввода−вывода

 

 

 

basic_streambuf<E, T> *rdbuf(basicкstreambuf<E, T> *sb);

 

 

 

 

 

 

 

 

 

 

 

т

 

 

 

 

 

 

basic_ios& copyfmt(const basic ios& rhs);

 

 

 

 

 

locale imbue(const locale& loc);

 

 

 

 

 

 

E widen(char ch);

 

о

 

 

 

 

 

 

 

 

 

 

 

и

 

 

 

 

 

 

 

 

 

char narrow(E ch, char dflt);

 

 

 

 

 

 

protected:

 

л

 

 

 

 

 

 

 

 

 

 

 

basic_ios();

 

 

 

 

 

 

 

 

 

 

 

 

};

void init(basic streambuf<E, T>* sb);

 

 

 

 

 

при

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Далее

 

водятся прототипы некоторых функций классов istream и

Б

б

 

 

 

 

 

 

 

 

 

 

 

 

ostream.

 

 

 

 

 

 

 

 

 

 

 

 

 

template <class E, class T = char_traits<E> >

class basic_istream : virtual public basic_ios<E, T> {public:

bool ipfx(bool noskip = false); void isfx();

streamsize gcount() const; int_type get(); basic_istream& get(E& c);

basic_istream& get(E *s, streamsize n);

162

basic_istream& get(E *s, streamsize n, E delim); basic_istream& get(basic_streambuf<E, T> *sb); basic_istream& get(basic_streambuf<E, T> *sb, E delim);

basic_istream& getline(E *s, streamsize n)E

 

 

basic_istream& getline(E *s, streamsize n, E delim);

 

basic_istream& ignore(streamsize n = 1,

// пропускает n символов или

 

 

int_type delim = T::eof()); // завершается при считывании

 

 

 

 

 

 

// заданного ограничителя по

 

 

 

 

 

 

// умолчанию − EOF

int_type peek();

 

// читает символ из потока, не удаляя его из потока

basic_istream& read(E *s, streamsize n); // неформатированный ввод

streamsize readsome(E *s, streamsize n);

 

 

 

basic_istream& putback(E c);// возвращает обратно в потокРпредыдущий

 

 

 

// символ, полученный из потока функцией get

basic_istream& unget();

 

 

 

 

И

pos_type tellg();

 

 

 

 

 

У

basic_istream& seekg(pos_type pos);

 

 

 

 

 

 

basic_istream& seekg(off_type off, ios base::seek_dir way);

int sync();

 

 

 

 

Г

 

 

 

 

Б

 

 

};

 

 

 

 

 

 

template <class E, class T = char traits<E> >

 

 

class basic_ostream : virtual public basic_ios<E, T>

 

{public:

 

 

 

а

 

 

 

 

 

к

 

 

 

 

bool opfx();

 

 

 

 

 

 

е

 

 

 

 

 

void osfx();

 

 

 

 

 

 

basic_ostream& put(E c);

 

 

 

 

 

basic_ostream& write(E *s, streamsize n);

// неформатированный вывод

basic_ostream&тflush();

 

 

 

 

 

pos type tellp();о

 

 

 

 

 

 

basic

ostream& seekp(pos_type pos);

 

 

 

basic

и

 

 

 

 

 

 

 

ostream& seekp(off_type off, ios_base::seek_dir way);

}; л

 

 

 

 

 

 

 

б

 

 

 

 

 

 

 

 

Вопросы и упражнения для закрепления материала

1. Создайте определенный пользователем класс Point, который содержит

и

 

 

 

 

 

 

 

 

скрытые компоненты-данные xCoord и yCoord и объявляет перегруженные

Бфункции-операторы «взять из потока» и «поместить в поток» как дружествен-

ные функции класса.

 

 

 

 

 

 

 

2. Напишите функцию main, которая проверяет ввод и вывод определен-

ного пользователем класса Point c помощью перегруженных операций «взять из потока» и «поместить в поток».

3. Напишите программу, демонстрирующую, что функция get оставляет символ-ограничитель во входном потоке, а getline извлекает его из потока и от-

163

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]