Перезавантаження << та >> для файлів

Програма 26.15 продемонструє, як перезавантажуються оператори << та >> в класі Distance для роботи з файловим вводом/виводом.

#include<fstream>

#include<iostream>

#include<conio>

using namespace std;

class Distance

{private:

int feet;

float inches;

public:

Distance():feet(0),inches(0.0)

{ }

Distance(int ft,float in):feet(ft),inches(in)

{ }

friend istream& operator>>(istream& s,Distance& d);

friend ostream& operator<<(ostream& s,Distance& d);

};

////////////////

istream& operator>>(istream& s,Distance& d)

//одержати дані з файлу чи клавіатури

{char dummy;

s>>d.feet>>dummy>>dummy>>d.inches>>dummy;

return s;

}

//////////////

ostream& operator<<(ostream& s,Distance& d)

{s<<d.feet<<"\'-"<<d.inches<<'\"';

return s;

}

///////////////

 

int main()

{char ch;

Distance dist1;

ofstream ofile; //створити і відкрити

ofile.open("DIST.DAT"); //вихідний потік

do

{cout<<"\nVvedit vidstan: ";

cin>>dist1; //одержати дані від користувача

ofile<<dist1; //записати їх у вихідний потік

cout<<"Continue? (y/n)";

cin>>ch;

}while(ch!='n');

ofile.close(); //закрити вихідний потік

ifstream ifile; //створити і відкрити

ifile.open("DIST.DAT"); //вхідний потік

cout<<"\nVmist failu\n";

while(true)

{ ifile>>dist1; //читання даних з потоку

if(ifile.eof()) //вихід по eof

break;

cout<<"Vidstan="<<dist1<<endl;

};

getch();

return 0;

}

 

Програма 26.15

У перезавантажені операції ми ввели лише мінімальні зміни. Оператор >> більше не просить ввести вхідні дані, оскільки розуміє, що просити про щось файл безсенсовно. Ми передбачаємо, що користувач знає, як точно вводити значення футів та дюймів, включаючи знаки пунктуації. Оператор << залишився без змін. Програма запитує у користувача вхідні дані і після одержання кожного значення записує його в файл. Коли користувач закінчує ввід даних, програма читає з файлу і виводить на екран всі дані, які там зберігаються.

Якщо користувач помилиться при вводі даних, вони не будуть записані коректно в файл і не зможуть бути прочитані оператором <<. В реальній програмі необхідно перевірити, чи правильно відбувся ввід.

 








Дата добавления: 2015-08-26; просмотров: 531;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.