2013-05-12 3 views
1

이 사이트를 처음 사용하기 때문에 내 질문에 적절하게 답할 것입니다.복수 입력 옵션을 선택하면

저는 성과 이름을 모두 처리하는 이름 클래스에서 작업하고 있습니다. 내가 겪고있는 문제는 istream 연산자 >>를 설정하는 것, 그것이 입력의 끝 부분에 도달했는지 판단하기 위해 내 프로그램을 얻는 방법을 이해할 수 없다는 것입니다. 예를 들어, 단지 이름을 입력하고 생성자가 성을 처리하게하려는 경우입니다. 이 현재의 코드 비트는 첫 번째 이름 만 읽지 만 첫 번째와 마지막 두 가지 모두에 이름을 붙일 때 둘 다 읽습니다.

istream& operator>>(istream& is, name& e){ 
string f; 
string l; 
is>>f; 
if(is.eof()) 
    { 
     e = name(f); 

    } 
else 
    { 
     e = name(f,l); 
    } 

return is; 
}; 

사전에 도움을 주셔서 감사합니다.

+0

입력에 대한 두 가지 대안의 예가 있습니까? –

답변

0

if 조건은 둘 이상의 이름이 입력되었는지 여부에 관계없이 eof를 확인하는 것으로 나타납니다.

아마도 입력을 배열로 분해하고 sizeof를 사용하여 여러 이름을 확인할 수 있습니까?

istream이 어떻게 작동하는지 잘 모르겠지만이 기능이 유용하게 사용되기를 바랍니다.

+0

이 대답의 첫 번째 줄은 아마 올바른 줄에 있지만,'sizeof()'를 사용하면 결과가 런타임에 계산 된 것을 기반으로 할 때 유용하지 않습니다. - sizeof()는 컴파일시에 수행됩니다. –

관련 문제