Знам, че има подобни въпроси за 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