2011-10-04 5 views
0

분수 클래스의 경우 오버로드 >>를 처리하고 있으며 처리해야 할 입력 유형이 몇 가지 있습니다. 예 : 1/2 (일반 분수), 2 + 3/4 (혼합 숫자), 2 (정수). 교수는 정수 다음에 두 번째 문자가 무엇인지 알아 내기 위해 peek() 함수를 사용해야한다고 말하면서 아래에 힌트를 제공했습니다. 즉, temp을 int로 선언해야한다는 것입니다. 내 질문은 temp가 int 인 경우 나머지 부분을 어떻게 구합니까 (정수가 아닌 경우)?peek()을 사용하여 입력 스트림 오버로드

내 경험에 비추어 볼 때 temp를 대신 문자열로 선언하고 peek을 사용하지 않을 것입니다. 그러나 int와 peek 접근은 교수가 그것을 제안한 이후로 약간의 장점을 가져야 만합니다. 당신이 in>>temp를 사용할 때 몇 가지 숫자가 아닌 문자가 발견 될 때까지 여기

in >> temp; 
if (in.peek() == '+'){ 
    doSomething... 
} else if (in.peek() == '/'){ 
    doSomethingElse... 
} else { 
    doThirdOption 
} 

답변

0

, 그것은 모든 숫자를 얻을 것이다. 이때 peek()을 사용하면 다음 문자가 '+' 또는 '/'인지 확인할 수 있습니다.
두 경우 모두 입력 스트림에서 다른 번호를 읽고이 절차를 반복해야합니다.
사용자가 Enter 키를 누르면 모든 숫자가 있으며 필요한 작업을 수행 할 수 있습니다.

또한 분수 값을 계산해야하는 경우 int 대신 float 또는 double 데이터 유형을 사용하는 것이 더 좋습니다.

+0

맞아요. 입력 스트림에서 다음 번호를 읽는 방법에 궁금한가요? 즉 + 또는 /? 우리가 이미 temp를 + 또는/앞에있는 첫 번째 int 인 int로 선언했기 때문에 그것은 나에게 이해가되지 않습니다. –

+0

당신이 할 수있는 일은 각 반복 끝에 값을 추가 할 수있는 합 변수를 갖는 것입니다. 그런 다음 동일한 임시 변수를 사용하여 기호 다음에 입력을 얻습니다. –

관련 문제