1

您好,我在重载的提取运算符中读取行(忽略空格字符)时遇到问题

这是我的代码任何帮助都会很棒

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

1 回答 1

4

我们需要知道 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提示用户输入,您没有正确使用流提取运算符,它是用于对象状态的基本序列化和反序列化。不用于用户交互。我个人只会有一个“produce_credit_account()”函数或类似的函数。

编辑:清除std::cin

 std::cin.ignore(std::numeric_limits<std::streamsize>::max());
于 2012-09-28T10:55:40.553 回答