複素数を入力し、オーバーロードされた演算子を使用して実部と虚部の解析を処理しようとしています。のような数字を入力すると、 と1 + 2iが必要real = 1になりimaginary = 2ます。
今、Enter を入力1 + 2iすると、出力は1 + 0i. これを適切に行うにはどうすればよいですか(Numberにはプライベートデータメンバーがrealありimaginary、operator>>フレンド機能です)
//input the form of 1 + 2i
istream & operator>>(istream &in, Number &value)
{
in >> std::setw(1) >> value.real;
in.ignore(3); //skip 'space' and '+' and 'space'
in >> std::setw(1) >> value.imaginary;
in.ignore(); //skip 'i'
return in;
}
//output in the for 1 + 2i
ostream &
operator<<(ostream &out, const Complex &value)
{
out << value.real << " + " << value.imaginary << "i" <<std::endl;
return out;
}