EOF 및 CTRL + D에 대해 비슷한 질문이 있지만 더 구체적인 질문이 있습니다. 내가 이해하는 방식으로 CTRL + D는 STDIN의 끝을 알리고 실행중인 응용 프로그램이 아니라 컴퓨터에서 처리합니다. 그러나 (Ctrl + D)를 통해 입력되었거나 명령이 포함 된 입력 파일 내에 포함 된 EOF 문자에 대한 내 프로그램 사용자에게 피드백을 제공해야합니다. 어떻게하면 좋을까요?C++ 프로그램의 EOF (CTRL + D) 문자에 대한 사용자 피드백 제공
은 내가 그것을 할 생각 방법에 대한 내 간단한 코드를 포함, 그러나 그것은 분명한 이유 작동하지 않습니다
#include <iostream>
#include <string>
using namespace std;
int input()
{
string cmdstring;
cin >> cmdstring;
if (cmdstring == "bye") //Exit on "bye" command
{
return 1;
}
else if (cmdstring == "^D") //Exit on EOF character CTRL+D
{
return 2;
}
else //Continue shell prompt
{
return 0;
}
}
난 내 자신의 껍질을 쓰기 위해 노력하고있어, 나는 제공 할 쉘이 종료 할 때의 종료 상태. 고마워요!
편집 : cin.eof()로 변경했지만 여전히 작동하지 않습니다.
else if (cin.eof()) //Exit on EOF character CTRL+D
{
return 2;
}
또한, 나는 사용자 가 지속적가 공급 될 때까지 메시지가 표시되도록이 코드는 루프 내에서 실행하는 기능이 있음을 언급하는 것을 잊었다 "안녕"또는 EOF 문자를 읽습니다.
int exitstatus = 0; //Tracks exit code status
do {
exitstatus = input();
} while (exitstatus == 0);
를 반환해야합니다. – Galik
나는 그것에 대해 몰랐다! 그러나 슬프게도 작동하지 않는 것 같습니다. 그것은 EOF 문자를 잡는 것처럼 보이지 않지만 터미널에 "^ D"문자를 배치하므로 처음에는 그 문자를 좋아했습니다. – mallux
"^ D"문자가 없습니다. 쉘은 "^ D"문자를 가로 채고 결과로'stdin'에 EOF 상태를 설정합니다. – Galik