Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2025, 13:09   #1
vovamakarovych
Пользователь
 
Регистрация: 09.04.2019
Сообщений: 50
По умолчанию написать функцию для ввода (инпута) вектора(математического Vector2d) в формате x y (координаты через пробел)

Мой код:
Код:
std::ostream& operator>>(std::istream& is, const Vector2d& vec)
{
    is >> vec.mX >> ";" >> vec.mY;
    return is;
}
Но так не работает. Ошибки:
Цитата:
binary '>>': no operator found which takes a right-hand operand of type 'const float' (or there is no acceptable conversion)
Цитата:
no operator ">>" matches these operands
Как тогда правильно написать функцию?
vovamakarovych вне форума Ответить с цитированием
Старый 08.02.2025, 13:40   #2
DeepFlake
Форумчанин
 
Регистрация: 16.05.2024
Сообщений: 186
По умолчанию

Покажите как должна вызываться эта функция. То есть как должен быть ввод данных
DeepFlake вне форума Ответить с цитированием
Старый 08.02.2025, 13:57   #3
vovamakarovych
Пользователь
 
Регистрация: 09.04.2019
Сообщений: 50
По умолчанию

Цитата:
Сообщение от DeepFlake Посмотреть сообщение
Покажите как должна вызываться эта функция. То есть как должен быть ввод данных
Код:
Vector2d testVec; 
std::cin >> testVec;

Последний раз редактировалось vovamakarovych; 08.02.2025 в 14:41.
vovamakarovych вне форума Ответить с цитированием
Старый 08.02.2025, 14:49   #4
DeepFlake
Форумчанин
 
Регистрация: 16.05.2024
Сообщений: 186
По умолчанию

Покажите как вы вводите с клавиатуры
DeepFlake вне форума Ответить с цитированием
Старый 08.02.2025, 14:53   #5
DeepFlake
Форумчанин
 
Регистрация: 16.05.2024
Сообщений: 186
По умолчанию

ввод с клавиатуры должен быть в каком-нибудь формате в виде единой строки, например
(##,##)
где ## - целое число
DeepFlake вне форума Ответить с цитированием
Старый 08.02.2025, 14:54   #6
vovamakarovych
Пользователь
 
Регистрация: 09.04.2019
Сообщений: 50
По умолчанию

Цитата:
Сообщение от DeepFlake Посмотреть сообщение
Покажите как вы вводите с клавиатуры
я думаю как то так нужно:
Код:
 float mX, mY;
 std::cin << mX  mY;
И должно записатся в Vector2d(mX, mY)

Последний раз редактировалось vovamakarovych; 08.02.2025 в 14:57.
vovamakarovych вне форума Ответить с цитированием
Старый 08.02.2025, 14:57   #7
DeepFlake
Форумчанин
 
Регистрация: 16.05.2024
Сообщений: 186
По умолчанию

Vector2d testVec;
std::cin >> testVec;

- это всё правильно, просто с клавиатуры то что вводите?
Надо например
(567, 34)

И соответственно делать разбор и проверку в переопределённом операторе >>
DeepFlake вне форума Ответить с цитированием
Старый 08.02.2025, 14:59   #8
vovamakarovych
Пользователь
 
Регистрация: 09.04.2019
Сообщений: 50
По умолчанию

Цитата:
Сообщение от DeepFlake Посмотреть сообщение
Vector2d testVec;

И соответственно делать разбор и проверку в переопределённом операторе >>
А как его правильно переопределить?
vovamakarovych вне форума Ответить с цитированием
Старый 08.02.2025, 14:59   #9
vovamakarovych
Пользователь
 
Регистрация: 09.04.2019
Сообщений: 50
По умолчанию

у меня ошибки(
Код:
std::ostream& operator>>(std::istream& is, const Vector2d& vec)
{
    is >> vec.mX >> ";" >> vec.mY;
    return is;
}
vovamakarovych вне форума Ответить с цитированием
Старый 08.02.2025, 15:03   #10
DeepFlake
Форумчанин
 
Регистрация: 16.05.2024
Сообщений: 186
По умолчанию

Глобальный >>
Код:
istream& operator >> ( istream& is, Vector2d& v )
{
  char c;

  cin >> c;
  assert( c=='(' );

  cin >> v.x ;

  cin >> c;
  assert( c==',' );

  cin >> v.y ;

  cin >> c;
  assert( c==')' );

  return is;
}
DeepFlake вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать функцию, которая проверяет содержится ли в строке время в формате ЧЧ:ММ:СС. v_samoye_kokoro Фриланс 3 26.12.2021 02:26
Реализация сложного математического выражения, записать математическую функцию через цикл for Potter94 Помощь студентам 12 13.11.2017 16:02
Написать функцию, которая будет удалять из строки лишние пробелы, оставляя только один пробел Натан Эршенгорен Помощь студентам 6 11.01.2017 16:39
C++ Builder Перегрузка оператора = с ошибкой Could not find a match for 'operator Vector2D::=(const Vector2D)' kolobuch Помощь студентам 0 16.04.2012 22:39
Дано множество точек. Записать через пробел в выходной файл координаты центра и радиус минимального круга napster1991 Помощь студентам 3 05.02.2011 19:26