Здравствуйте, объясните, пожалуйста, что от меня хотят...
Задачка :"Определите тип Name_and_address(имя и адрес). Определите для него операторы << и >>. Скопируйте поток объектов типа Name_and_address, и вставьте в него столько ошибок, сколько сможете придумать (например, ошибки формата и преждевременные концы строки). Обработайте эти ошибки таким образом, чтобы гарантировать, что функция копирования прочитает большинство правильно отформатированных объектов Name_and_address, хотя на вводе будут чередоваться "плохие" значения с "хорошими"." Страуструп 3-е издание стр. 722, глава 21.
Класс, ввод и вывод я объявил:
Код:
class Name_and_address
{ public:
std::string name;
void* address;
Name_and_address(std::string s="", void* adr=0) :name(s),address(adr){};
};
ostream& operator<<(ostream& s, Name_and_address z)
{ return s<<'('<<z.name<<','<<z.address<<')'; };
istream& operator>>(istream& s, Name_and_address& z)
{ string Name = "";
void* Adr = 0;
char c = 0;
s>>c;
// проверка по аналогии с примером на комплексные числа из
//Страуструпа стр.688
if(c=='(')
{ s>>Name>>c;
if(c==',')
s>>Adr>>c;
if(c!=')')
s.clear(ios_base::failbit);
}else{
s.putback(c);
s>>Name; }
if(s)
z = Name_and_address(Name,Adr);
return s;
};
Объяснить, пожалуйста, что значит "скопировать поток" и "вставить в него ошибки".
Заранее благодарен.