0
我知道有關於EOF和CTRL + D的類似問題,但我有一個更具體的問題。按照我的理解,CTRL + D表示STDIN的結束,由計算機處理,而不是正在運行的應用程序。但是,我需要通過(CTRL + D)輸入的EOF字符或包含命令的輸入文件中包含的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;
}
}
我試圖寫我自己的殼,我想提供shell退出時的退出狀態。非常感謝你!
編輯: 我將其更改爲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);
我會想'如果(cin.eof())'應該這樣做。 – Galik 2014-11-03 21:24:33
我不知道!然而,它似乎並不可悲,它似乎沒有抓住EOF字符,但它在我的終端中放置了一個「^ D」字符,所以這就是爲什麼我最初是這樣做的。 – mallux 2014-11-03 21:32:39
沒有「^ D」字符。 shell攔截「^ D」字符,並將「stdin」上的EOF狀態設置爲結果。 – Galik 2014-11-03 21:49:56