istream operator with data check : overload ostream istream operator « Operator Overloading « C++ Tutorial






#include<iostream.h>
class Time
{
  int hour;
  int minute;
  int second;
public:
  friend ostream& operator<<( ostream &, Time);
  friend istream& operator>>( istream &,Time &);
};
ostream& operator<<( ostream & out, Time t)
{
  out<<"\nHere's the time:\n";
  out<<t.hour<<":"<<t.minute<<":"<<t.second<<"\n";
  return out;
}
istream& operator>>( istream & in ,Time & t)
{
  cout<<"Please enter the time as follow\n";
  do{
    cout<<"What is the hour(0-23)?";
       in>>t.hour;
       if((t.hour<0)||(t.hour>23))
       cout<<"You have inpitted a wrong data! Please try again!\n";
  }while((t.hour<0)||(t.hour>23));
  do{
    cout<<"What is the minute(0-59)?";
       in>>t.minute;
       if((t.minute<0)||(t.minute>59))
       cout<<"You have inpitted a wrong data! Please try again!\n";
  }while((t.minute<0)||(t.minute>59));
  do{
    cout<<"What is the second(0-23)?";
       in>>t.second;
       if((t.second<0)||(t.second>59))
       cout<<"You have inpitted a wrong data! Please try again!\n";
  }while((t.second<0)||(t.second>59));
  return in;
}
main()
{
  Time now;
  cin>>now;      
  cout<<now;     
  return 0;
}
Please enter the time as follow
What is the hour(0-23)?12
What is the minute(0-59)?12
What is the second(0-23)?12

Here's the time:
12:12:12








10.15.overload ostream istream operator
10.15.1.Class level ostream operator and istream operator
10.15.2.istream operator with data check
10.15.3.Class ostream operator
10.15.4.ostream and istream operator for a class
10.15.5.Complex logic in ostream operator
10.15.6.friend ostream operator for private fields
10.15.7.Overload ostream and istream operator
10.15.8.Ignore: manipulator that ignores N lines
10.15.9.Overloading >>: To demonstrate a custom inserter, one will be created for objects of type phonebook, shown here.
10.15.10.Overload << (inserter)