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

标签 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;
}

最佳答案

你不应该只循环测试eof。流还有其他方式出错。像这样循环:

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

关于c++ - CTRL+D 在 Mac OS X 终端突然停止工作,不会执行 EOL 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35614364/

相关文章:

c++ - 窗口出现奇怪的 SFML 错误

c++ - 无法访问 C++ std::set 中对象的非常量成员函数

swift - 应用程序沙箱阻止创建 .sqlite-shm、.sqlite-wal 文件(swift)

macos - Mac os x Terminal.app 的缓冲区和 screen 命令

linux - shell脚本从属性文件中读取数组中的属性

bash - ZSH 无法识别我的别名?

linux - 我正在尝试使用 OR 运算符运行 if-elif 条件

c++ - 存储多个可变大小的 std 数组

c++ - 模板结构错误

在 Mac 上调试 php?