2012-04-15 7 views
1

Ctrl + Z로 루프를 종료하려고하는데 작동하지 않습니다. 신중하게 코드를 살펴 봤지만 문제를 파악할 수는 없습니다. 귀하의 도움을 주시면 감사하겠습니다. Dev-C++을 사용하고 있습니다. 코드는 다음과 같습니다.루프를 종료 할 때 Ctrl + Z가 작동하지 않습니다.

+1

사람은 Ctrl 키를 입력 한 경우 확인하는 코드는 다음과 같습니다 당신이 당신의 DO-동안 형식을 유지하려는 경우,

std::cout << "Enter name, age, GPA; or CTRL-Z to exit\n"; while (cin >> name >> age >> GPA) { // do something with one set of input } 

또는 + Z? 나는 EOF에 대한 수표 만 보았습니다. –

+0

나는 (getch()! = EOF)를 사용함으로써, 사용자가 ctrl + Z를 누를 때 종료 될 것이라고 생각했다. – T4000

답변

1

Windows 콘솔 I/O와 C++ 스트림 I/O를 혼합합니다. Gary Larson을 다른 말로 바꾸려면 테라 리엄과 호환되지 않는 종을 혼합했습니다.

같이, 단지 C++ 구조를 사용해보십시오 :

do 
{ //enter student data 
    cout << "Name: " ; 
    if(!cin>>name) break; 
    cout<<"Age: "; 
    if(!cin>>age) break; 
    cout << "GPA: "; 
    if(!cin>>GPA) break; 
} 
while(cin); //Ctrl+Z to exit 
1

유닉스 계열 컴파일러를 사용하는 경우 ctrl-D를 사용하십시오. Dev-C++에 익숙하지는 않지만 MinGW에 관해서는 뭔가를 말합니다.

+0

할당에서 dos에서 Ctrl-Z를 사용하기를 원합니다. 이후 나는 윈도우 비스타를 사용하고 있으므로 Ctrl-Z가 해당 OS에서 사용하는 것임을 알았습니다. – T4000

2

콘솔은 파일이 아닙니다. 콘솔이 끝나지 않습니다. 콘솔이 파일의 끝을 가질 수있는 방법은 없습니다.

나는 당신이 I/O는 (conio.h/getch), I를 제출하지/O (stdio.h/getchar를) 콘솔을 사용하고 있는지 잊어 버린 것 같아요. EOF에 대해 무엇을 생각하든 콘솔 I/O가 아닙니다. 나는 getch 반환 EOF, 그리고 내가 말할 수있는 한, 어떤 의미가되지 않을 것이라고 제안하는 설명서를 찾을 수 없습니다.

Control-Z를 확인하려면 다음을 수행하십시오. 십진수 26 또는 0x1A입니다.

+0

예, EOF 값은 -1입니다. 그런데 Ctrl-Z의 ASCII 이름은 EOF 대신 SUB입니다. –