一开始遇到的问题大概是
while循环中判断的变量如果输入非数字时会导致死循环
在其他文章中看到其他清空输入缓存区的方法,但是使用后仍有一些问题,比如
cin.clear();与cin.ignore();一起使用时
即为在while循环中的末尾添加两行语句
比如
while(x)
{
...
...
...
cin.clear();
cin.ignore();
}
虽然确实解决了死循环的问题,但是里面如果有if语句的话,本次所有的if语句都会真,继续执行
while ((a = getchar()) != ‘\n’);使用时
即在输入数据后使用gatchar把被读取的数据,后面剩下的数据依次读取出来
以下是我使用的场景,或许是我使用有问题,还请指出
while(x)
{
cin >> x;
char a;
while ((a = getchar()) != '\n');
......
......
}
问题确实解决了,但是后面再继续输入时,cin直接跳过去了
while(x)
{
cin >> x;
char a;
while ((a = getchar()) != '\n');
cin >> x;
......
......
}
也就是说缓冲区仍有内容?
以上这种问题,以我目前的水平,能想到的解决方案只有
getchar与clear一起用,即在获取输入后使用getchar,然后使用cin.clear();复位位置标志
(目前仍有一个问题,这样使用时,如果输入(数字+非数字)时,会正确读取非数字前的数字)
以本人目前水平暂时无法解决