Я знаю, что есть похожие вопросы о EOF и CTRL+D, но у меня есть более конкретный вопрос. Насколько я понимаю, CTRL+D сигнализирует об окончании STDIN и обрабатывается компьютером, а не работающим приложением. Однако мне нужно предоставить отзыв пользователю моей программы о символе 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);
if(cin.eof())
должен это сделать. - person Galik   schedule 04.11.2014stdin
. - person Galik   schedule 04.11.2014eof()
не сработала для вас. Я считаю, что это то, что должно иметь эффект при нажатииCtrl-D
. - person Galik   schedule 04.11.2014