Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Пользовательский ввод/вывод и файлы



В предыдущих лекциях, используя перегрузку операторов вставки и извлечения для создаваемых классов, был реализован консольный ввод/вывод. Однако поскольку все потоки C++ одинаковы, то одинаково перегруженная, например, функция вставки, может использоваться без каких-либо изменений для вывода на экран или в файл. Перегружаемые функции вставки и извлечения так же, как и манипуляторы ввода/вывода, могут использоваться с любым потоком. Если вы "жестко" зададите использование конкретного потока в функции ввода/вывода, ее применение, несомненно, будет ограничено этим потоком. Следует стараться, где это только возможно, проектировать функции ввода/вывода универсально по отношению к потокам.

Пример: В следующей программе для класса coord перегружаются операторы << и >>. Следует обратить внимание, что оператор-функцию можно использовать для вывода, как на экран, так и в файл.

#include <iostream.h>

#include <fstream.h>

class coord { int x, y;

public: coord(int i, int j) { x = i; у = j;)

friend ostream &operator<<(ostream &stream, coord ob);

friend istream &operator>>(istream &istream, coord &ob);

};

ostream &operator<<(ostream &stream, coord ob)

{ stream << ob.x << ' ' << ob.у «'\n';

return stream;

}

istream &operator>>(istream &istream, coord &ob)

{ stream >> ob.x >> ob.y;

return stream;

}

main ()

{ coord ol(1, 2), o2(3, 4);

ofstream out("test");

if(!out)

{ cout << "Файл открыть невозможно\n”;

return 1;

}

out << ol << o2;

out.close();

ifstream in("test");

if(!in)

{ cout << "Файл открыть невозможно\n”;

return 1;

}

coord o3 (0, 0),o4(0,0);

in >> o3 >> o4;

cout << o3 << c4;

return 0;

}

}





Дата публикования: 2015-02-22; Прочитано: 276 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...