Здравствуйте, у меня проблемы с чтением строк (игнорировать пробелы) в перегруженном операторе извлечения
это мой код, любая помощь будет отличной
istream& operator>>(istream& is, CreditAccount& Cred){
cout << "Name: ";
is.getline(Cred.name, 256);
}
моя ошибка заключается в следующем
error: no matching function for call to ‘std::basic_istream<char, std::char_traits<char> >::getline(std::string&, int)’
нам нужно знать тип Cred :: name, однако из вашей ошибки он выглядит как std :: string. правильная функция для использования:
#include <string> //for std::getline
istream& operator>>(istream& is, CreditAccount& Cred){
std::cout << "Name: ";
std::getline(is, Cred.name);
return is;
}
Я также хотел бы подчеркнуть, что если вы используете std::cout
чтобы запросить у пользователя ввод данных, вы не используете оператор извлечения потока должным образом, он предназначен для базовой сериализации и десериализации состояния объектов. Не для взаимодействия с пользователем. Лично у меня просто была бы функция «yield_credit_account ()» или тому подобное.
РЕДАКТИРОВАТЬ: очистить std::cin
std::cin.ignore(std::numeric_limits<std::streamsize>::max());
Других решений пока нет …