RobertDeMilo

WB4.9 Перегрузка операторов ввода и вывода

Oct 11th, 2023
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.25 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <vector>
  5. #include <iomanip>
  6. #include <sstream>
  7.  
  8. using namespace std;
  9.  
  10. struct Duration
  11. {
  12.     Duration(int h = 0, int m = 0)
  13.     {
  14.         hour = h;
  15.         min = m;
  16.     }
  17.  
  18.     int hour;
  19.     int min;
  20. };
  21.  
  22. Duration ReadDuraton(istream& stream)
  23. {
  24.     int h = 0;
  25.     int m = 0;
  26.  
  27.     stream >> h;
  28.     stream.ignore(1);
  29.  
  30.     stream >> m;
  31.     stream.ignore(1);
  32.  
  33.     return Duration{ h,m };
  34. }
  35.  
  36. void PrintDuration(ostream& stream, const Duration& duration)
  37. {
  38.     stream << setfill('0');
  39.     stream << setw(2) << duration.hour << ':' << setw(2) << duration.min;
  40. }
  41.  
  42. ostream& operator<<(ostream& stream, const Duration& duration)
  43. {
  44.     stream << setfill('0');
  45.     stream << setw(2) << duration.hour << ':' << setw(2) << duration.min;
  46.  
  47.     return stream;
  48. }
  49.  
  50. istream& operator >> (istream& stream, Duration& duration)
  51. {
  52.     stream >> duration.hour;
  53.     stream.ignore(1);
  54.  
  55.     stream >> duration.min;
  56.     stream.ignore(1);
  57.  
  58.     return stream;
  59. }
  60.  
  61. int main()
  62. {
  63.     stringstream dur_ss("02:50");
  64.     /*Duration dur1 = ReadDuraton(dur_ss);*/
  65.     /*PrintDuration(cout, dur1);
  66.     operator << (operator << (cout, "hello"), " world");
  67.     cout << dur1 << endl;*/
  68.  
  69.     //Duration dur1{ 0,0 };
  70.     Duration dur1;
  71.  
  72.     dur_ss >> dur1;
  73.  
  74.     cout << dur1 << endl;
  75.  
  76.     return 0;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment