微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

getline和cin与条件的不同行为

如何解决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 举报,一经查实,本站将立刻删除。