cin.ignore.get() 导致我的程序卡在输入上

cin.ignore.get() causing my program to stuck on input

提问人:SanguineL 提问时间:9/23/2023 最后编辑:SanguineL 更新时间:9/23/2023 访问量:42

问:

我的教授指示我在我的程序中使用下面的代码块。

void enter_to_continue() {
    cout << "Press enter to continue...";
    cin.ignore().get();
}

但是,此代码块无法按预期工作。无论我按多少次,程序都不会继续。这是实现它的正确方法吗?(另外,虽然这似乎是一个简单的问题,但到目前为止,我还没有找到任何其他答案。Return

在 Ubuntu 上使用 g++ 11.4.0 编译。

C++ CIN格式

评论

2赞 user4581301 9/23/2023
cin.ignore().get();是我不相信我以前见过的东西。它必须有一个字符,然后是另一个字符。假设流从空开始,则至少按两次退出。只要输入就会被忽略吃掉,让程序阻止。ignoregetget
0赞 Ted Lyngmo 9/23/2023
“无论我按多少次 Return,程序都不会继续”——这很奇怪。它对我有用(在任何键上敲击一次键后,然后返回一次)。我假设您在程序的其他地方有问题。
0赞 Alan Birtles 9/23/2023
您使用的是哪个编译器和版本?哪个操作系统?
3赞 user4581301 9/23/2023
你应该能够得到几乎你想要的东西,并检查以确保你得到的确实是用户按回车键。我只是扔下一个:忽略所有内容,直到换行符。这总是有效的。getcin.ignore(numeric_limits<streamsize>::max(), '\n')
1赞 tbxfreeware 9/23/2023
1. 有没有可能处于失败状态?2. 信任用户在不键入任何其他内容的情况下按 Enter 键并不可靠。我的这个函数版本在循环中调用。在循环中,它从字符串中剪切空格,然后检查是否为空。当为空时,循环停止。否则,该函数会显示一条消息,指出“在空白行上按 Enter...”,并继续循环。std::cinstd::getline(std::cin, s)sss

答: 暂无答案