std::cin.clear() fails to restore input stream in a good state

本小妞迷上赌 提交于 2019-12-02 01:58:41

Add this line after clearing cin:

std::cin.ignore();

This way, the stream ignores whatever is left on its buffer.

tstanisl

Try to use following combo:

cin.ignore(INT_MAX, '\n'); // ignore all characters in the current line

cin.clear(); // restore 'good' flag

Using only cin.ignore() will discard only one character in the buffer.

Karthick K

if (std::cin >> f) expects either a 0 or 1. And treats all other values as an I/0 error. Even if you enter '-' or 2, std::cin.ignore() is still needed.

If you want the program to enter only the values true or false, use the following statement instead of (std::cin >> f)

(std::cin >> boolalpha >> f)

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!