getline和cin与条件的不同行为

问题描述

我有一个连续的while循环,在该循环中,我会无限期地获取用户输入,直到用户没有输入任何内容(即,按Enter键或遇到EOF为止)( Ctrl + D )。

第一次尝试,我使用getline函数

while (true)
    {   
        if (not (std::getline(std::cin,sm)) or sm.empty())
            break;
    }

它工作正常,在没有输入或EOF的情况下退出循环。

第二次尝试时,我使用标准的cin

while (true)
{   
    if (not (std::cin >> sm) or sm.empty())
        break;
}

在这种情况下,它不再按预期工作。当用户按下Enter键时,它不会退出循环,只有在进入EOF时它才会退出

有什么区别?我在这里想念什么?

任何帮助将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)