Как читать строки (игнорировать пробелы) в перегруженном операторе извлечения

Здравствуйте, у меня проблемы с чтением строк (игнорировать пробелы) в перегруженном операторе извлечения

это мой код, любая помощь будет отличной

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)’

1

Решение

нам нужно знать тип 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());
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]