C++的输入问题

当用户在预期输入数字时输入了一个单词,会导致cin的错误标记被设置,cin方法调用返回false。解决方法包括使用cin.clear()重置错误标记,通过cin.get()删除错误输入,并提示用户重新输入。这段代码展示了如何处理这种情况,确保能正确获取数字输入。
摘要由CSDN通过智能技术生成

存在问题

假设让用户输入一个数字,而用户输入的是一个单词,会发生什么?

  • 值保持不变

  • 不匹配的数保持在输入序列中

  • cin的错误标记被设置

  • 对cin方法调用将返回为false(被转换为bool类型)

    int n;
    cin>>n;//输入一个字符串
    

    如果非数字输入必须重置该标记,程序才能继续输入.

    clear()方法重置错误标记

    输入错误和EOF都将导致cin返回false

    cin>>n实际上是一个cin方法调用

解决方案

  1. 重置cin以接受新的输入S
  2. 删除错误输入
  3. 提示用户再输入

代码

int n;
while(!(cin>>n))
{
	cin.clear();
	while(cin.get() != '\n')
		continue;
	cout<<"\t 请输入一个数字:";
}

若用户输入10,则程序返回true,!取反,则退出while循环,若用户输入CPP,cin返回false,!取反,则程序进入while循环.

使用cin.clear();方法重置cin输入.接下来程序使用cin.get()来读取行尾之后的所有输入,来删除错误输入.最后程序提示,让用户重新输入一个数字.

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值