Чтобы пропускать строки и символы при чтении данных из файла, вы можете модифицировать перегрузку оператора `>>` для класса `Point`, чтобы она игнорировала все нечисловые символы и строки. Для этого можно использовать стандартные функции, такие как `isdigit` для проверки, если символ является цифрой, и применять циклы для пропуска нежелательных данных.
Ниже приведен пример реализации этого подхода:
### Изменения в файле `PointLogic.cpp`
```cpp
#include "Point.h"
#include <cctype> // Для isdigit
Point::Point(int x, int y) {
this->x = x;
this->y = y;
}
Point::~Point() { }
bool Point::operator==(Point& other) {
return this->x == other.x && this->y == other.y;
}
ostream& operator<<(ostream& output, Point& other) {
output << "Точка в координате X = " << other.x << endl;
output << "Точка в координате Y = " << other.y << endl;
return output;
}
istream& operator>>(istream& input, Point& other) {
string buffer;
char ch;
int values[2];
int index = 0;
// Читаем всё до конца потока
while (input >> ch) {
if (isdigit(ch) || ch == '-') { // Учитываем знаки минус на случай отрицательных чисел
buffer += ch;
} else if (!buffer.empty()) { // Если buffer не пустой, конвертируем его в число
values[index++] = stoi(buffer);
buffer.clear();
if (index >= 2) break; // Мы прочитали 2 значения, выходим
}
}
if (index >= 1) other.x = values[0];
if (index >= 2) other.y = values[1];
return input;
}
```
### Объяснение изменений:
1. **Цикл чтения символов**: Вместо того чтобы пытаться сразу прочитать `int` из потока, мы читаем каждый символ по отдельности. Если символ является цифрой или знаком `-`, мы добавляем его в `buffer`.
2. **Конвертация в целое число**: Когда встречаем символ, который не является частью числа (например, пробел или конец строки), и если `buffer` содержит какое-то значение, мы преобразуем его в целое число и сохраняем в массив.
3. **Условия на количество считанных значений**: Мы ограничиваем считывание только первыми двумя числовыми значениями и при необходимости можем выбросить остальные символы.
### Пример использования:
Когда вы будете использовать ваш класс `Point` и считывать данные, например как-то так:
```cpp
ifstream file("File.txt");
Point c;
file >> c; // Считывание точки, игнорируя все ненужные символы
cout << c; // Выводим считанные координаты
```
Таким образом, если файл содержит строки, которые не представляют собой координаты, они будут пропущены, и только числовые значения будут считаны в ваш объект `Point`.