Задачка из Страуструпа
От: 2lex  
Дата: 22.04.07 08:28
Оценка:
Здравствуйте, объясните, пожалуйста, что от меня хотят...
Задачка :"Определите тип 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;
    };

Объяснить, пожалуйста, что значит "скопировать поток" и "вставить в него ошибки".
Заранее благодарен.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.