Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP / lectures / 4_oop.ppt
Скачиваний:
85
Добавлен:
03.03.2016
Размер:
726.53 Кб
Скачать

Операции «поместить в поток» и «взять из потока» – это перегруженные операции сдвига влево (<<) и вправо (>>). .

Эти операции применяются к объектам стандартных потоков cin, cout, cerr и clog.

При обработке файлов C++ используются следующие классы:

-ifstream - выполняет операции ввода из файлов;

-ofstream - выполняет операции вывода в файлы;

- fstream, который выполняет операции ввода- вывода файлов.

ios

istream ostream

ifstream iostream ofstream

fstream

Пример использования объекта cerr

#include <iostream>

using namespace std; int main()

{

int x=123;

cerr << "x = " << x << endl; return 0;

}

Вывод встроенных типов

Фрагмент определения класса ostream:

class ostream : public virtual ios {

// ...

public:

ostream& operator<<(const char*); ostream& operator<<(short i) {

return *this << int(i); } ostream& operator<<(int); ostream& operator<<(const void*);

// ...

};

Примечание.

Функция operator<< возвращает ссылку на класс ostream, из которого она вызывалась, чтобы к ней можно было применить еще раз operator<<.

Таким образом,

cerr << "x = " << x;

соответствует вызову

(cerr.operator<<("x = ")).operator<<(x);

Это означает, что если несколько объектов выводятся с помощью одного оператора вывода, то они будут выдаваться в естественном порядке: слева - направо.

Ввод встроенных типов

Фрагмент определения класса istream:

class istream : public virtual ios {

//...

public:

istream& operator>>(char*);

// строка

istream& operator>>(char&);

// символ

istream& operator>>(int&);

 

//...

 

};

 

Для контроля соответствия количества введенных символов и объема зарезервированной памяти используется функции get и getline().

class istream : public virtual ios {

//...

istream& get(char& c); // символ int get();

istream& get(char*p, int n, char ='n'); // строка inline istream& getline(char *,int, char ='\n');

};

Пример. Использование функций get() и getline()

int main() { int k; char c;

char p[256]; k=cin.get();

cout << “k = " << k << endl; fflush(stdin);

c=cin.get();

cout << "c = " << c << endl; fflush(stdin);

cin.get(c);

cout << "c = " << c << endl; fflush(stdin);

cin.get(p,sizeof(p),'.'); cout<<p<<endl; fflush(stdin);

cin.get(p,sizeof(p));

cout<<p<<endl;

fflush(stdin);

cin.getline(p,sizeof(p));

cout<<p<<endl;

cin.getline(p,sizeof(p),'.'); cout<<p<<endl;

return 0;

}

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

Выполняется с помощью функций write() и read().

Каждая из них вводит или выводит некоторое число байтов в символьный массив в памяти или из него.

Соседние файлы в папке lectures