Advertisement
Ejejejejejjr

Перегрузка операторов ввода/ввода

Dec 30th, 2020
301
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.67 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <fstream>
  4.  
  5. class Point
  6. {
  7.   public:
  8.     Point()
  9.     {
  10.         x = y = z = 0;
  11.     }
  12.  
  13.     Point(int x, int y, int z)
  14.     {
  15.         this->x = x;
  16.         this->y = y;
  17.         this->z = z;
  18.     }
  19.    
  20.     //объявление функций перегрузок операторов ввода/вывода дружественными классу Point
  21.     friend std::ostream &operator<<(std::ostream &os, const Point &point);
  22.     friend std::istream &operator>>(std::istream &is, Point &point);
  23.  
  24.  
  25. private:
  26.     int x;
  27.     int y;
  28.     int z;
  29. };
  30.  
  31.  
  32. // перегрузка оператора вывода
  33. std::ostream &operator<<(/*константная ссылка на оператор вывода*/ std::ostream &os, /*ссылка на объект класса Point*/ const Point &point)
  34. {
  35.     os << point.x << " " << point.y << " " << point.z << "\n";
  36.  
  37.     return os;
  38. }
  39.  
  40.  
  41. // перегрузка оператора ввода
  42. std::istream &operator>>(/*ссылка на оператор ввода*/ std::istream &is, /*ссылка на объект класса Point*/ Point &point)
  43. {
  44.     is >> point.x >> point.y >> point.z;
  45.  
  46.     return is;
  47. }
  48.  
  49. int main(int argc, char *argv[])
  50. {
  51.     setlocale(LC_ALL, "Rus");
  52.     srand(time(NULL));
  53.  
  54.     Point point(7, 7, 7);
  55.  
  56.     std::string path = "file.txt";
  57.     std::fstream fs;
  58.     fs.open(path, /*запись*/ std::fstream::in | /*чтение*/ std::fstream::out | std::fstream ::app);
  59.     if (!fs.is_open())
  60.     {
  61.         std::cout << "Ошибка" << std::endl;
  62.     }
  63.     else
  64.     {
  65.         std::cout << "Файл открыт" << std::endl;
  66.         fs << point;
  67.         std::cout << point;
  68.         while (!fs.eof())
  69.         {
  70.             Point p;
  71.             fs >> p;
  72.             if (fs.eof())
  73.             {
  74.                 break;
  75.             }
  76.             std::cout << p << std::endl;
  77.         }
  78.     }
  79.     fs.close();
  80.    
  81.     return 0;
  82. }
  83.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement