2012-10-15 5 views
1

나는 약간의 코드를 가지고 있으며, 입력을 읽지 못하게하기 위해 cin.eof()를 사용하고 싶다. 나는하려고 생각하고 있었다 :cin.eof() 사용하기

char array[10] 
while(!cin.eof()) 
{ 
    for(int i = 0; i < 10; i++) 
    { 
    cin >> array[i]; 
    } 
} 

그리고 코드는 계속된다. 그러나 '\ n'을 클릭하면 출력이 출력됩니다. cntrl + d (UNIX 터미널에서)를 클릭하면 프로그램이 출력을 다시 수행 한 다음 끝나기 시작합니다. cntrl + d를 한 번만 입력하면 내 프로그램이 줄 바꿈에서 읽는 것을 멈추고 내 출력을 인쇄 할 수 있도록 어떻게 얻을 수 있습니까?

감사합니다.

+1

루프를 분리하십시오. –

+0

while 회 돌파? 내가 어떻게 할까? – user1567909

+0

아니요, while while 루프가 아닙니다 ... –

답변

0

먼저 입력이 실패 할 때까지 cin.eof()은 아무 것도하지 않습니다. 루프의 맨 위에 사용하고 싶지 않습니다.

두 번째로, 당신이하려는 일이 정말로 분명하지 않습니다. 다음과 같음 :

std::string line; 
while (std::getline(std::cin, line)) { 
    // ... 
} 

아마도? 파일 끝까지 line 변수에 텍스트 줄을 읽습니다. 파일 끝에 도달하면 입력이 실패하고 루프를 종료합니다.

+0

문자열을 사용할 수없는 경우 어떻게해야합니까? 이미 char 배열로 프로그램을 만들었습니다. – user1567909

+0

@ user1567909 그러면 길이를 지정하는 멤버 인 istream :: getline을 사용해야하고 길이가 초과되면 루핑하거나 다른 액션을 취해야합니다. 일반적으로 이런 종류의 문자열에'string'을 사용하지 않으면 코드를 불필요하게 복잡하고 연약하게 만드는 보장 된 방법입니다. –