나는 코드의이 비트가 :cin을 두 번 읽는 방법?
...
ComplexNumber C1;
ComplexNumber C2;
cout << "Enter a complex number C1:" << endl;
cin >> C1;
cout << C1 << endl;
cout << "Enter a complex number C2:" << endl;
cin >> C2;
cout << C2 << endl;
...
을하지만은 사용자 입력에 대한 두 번째 시간을 기다릴 것이며, 단순히 내가 제로에 대해 정의한 기본 값으로 C2를 떠나 발견 한로 arg 생성자를 ComplexNumber 클래스에 추가하고 계속 진행합니다.
이 문제에서 발견 된 모든 해결책은 cin >> 대신 getline()을 사용하지만이 할당은 ComplexNumber 클래스에 대해 opperator를 얼마나 잘 오버로드했는지 테스트하는 것이므로 getline 그 목적을 이길 것입니다. 이 작업을 수행하는 다른 방법이 있습니까?
수정 : @ 마틴 당신이 틀렸어! 운영자를 >>로 변경 한 후에 작동합니다.
istream & operator>>(istream & in, ComplexNumber & n)
{
int inreal=0;
int inimag=0;
in >> inreal;
char plus;
in.get(plus); // read the plus sign since it's a char
in >> inimag;
char i; // DID NOT HAVE THIS LINE AT FIRST
in.get(i); // DID NOT HAVE THIS LINE AT FIRST
n = ComplexNumber(inreal,inimag);
return in;
}
정말 고마워요!
저는 포럼에 처음 왔기 때문에 하위 주석에 어떻게 기여할 것인지 잘 모릅니다. 이 게시물의 한 공식 답변에 녹색 체크 만하면됩니다.
[중복 된 [cin을 두 번 사용했을 때의 문제점]. ] (http://stackoverflow.com/questions/2525352/problem-of-using-cin-twice) – wallyk
키보드에서 무엇을 입력 했습니까? (사용자가 누른 반환 및 제어 키 포함). 또한 연산자 >>를 COmplexNumber로 정의한 방법은 무엇입니까? –
테스트하는 중입니까? 입력 : 5 + 9i [입력] 내 인쇄 방법에서 예상대로 C1을 읽은 다음 출력의 나머지 부분 만 실행했습니다. –