栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++输入缓存区彻底清空

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++输入缓存区彻底清空

一开始遇到的问题大概是

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();复位位置标志
(目前仍有一个问题,这样使用时,如果输入(数字+非数字)时,会正确读取非数字前的数字)
以本人目前水平暂时无法解决

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1022173.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号