CTRL + D突然停止在Mac OS X终端中工作,不会执行EOL操作

时间:2016-02-24 22:20:02

标签: c++ macos shell terminal eof

我有基本代码,我试图在终端上运行一个类。输入完成后,我无法使用ctrl + d命令结束代码。代码查找某些字符的数量,“e”,元音以及计算使用的总字符数。昨天几个小时我能够使用Ctrl + D命令结束我的程序并继续编辑/添加它但它突然停止工作。

我注意到当一串“d”被输入到窗口中时,返回键被点击,然后使用ctrl + d,编程成功显示数据,否则任何其他输入似乎都没有提供我正在寻找的EOF命令。

我已经尝试重置我的终端,保存了“d”字符串工作的条件并再次尝试。到底是怎么回事?在广泛阅读了这个主题后,我认为这可能是由于其他事情在后台运行了?

int main() {
    char ch;
    int ecount=0, vowels=0, other=0;
    cin.get(ch);
    while(!cin.eof()) {
        switch(ch) {
            case 'e':
                ecount++;
            case 'a';
            case 'i':
            case 'o':
            case 'u': 
                vowels++;
                break;
            default:
                other++; 
        }
        cin.get(ch);
    }
    cout << ecount << " "<< vowels << " " << other << endl;
}

1 个答案:

答案 0 :(得分:1)

您不应仅循环测试eof。流还有其他方法可以出错。就像这样循环:

while( cin.get(ch) )
{
    // ...
}