1

こんにちはimは、オーバーロードされた抽出演算子で行の読み取りに問題があります(スペース文字を無視します)

これは私のコードですどんな援助も素晴らしいでしょう

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 に答える