程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

C++的输入问题

发布于2021-03-07 21:34     阅读(1293)     评论(0)     点赞(25)     收藏(3)


存在问题

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

  • 值保持不变

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

  • 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()来读取行尾之后的所有输入,来删除错误输入.最后程序提示,让用户重新输入一个数字.

原文链接:https://blog.csdn.net/JakeXY/article/details/114440275




所属网站分类: 技术文章 > 博客

作者:听说你混的不错

链接:http://www.qianduanheidong.com/blog/article/33525/b4191e31b8cfe940db35/

来源:前端黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

25 0
收藏该文
已收藏

评论内容:(最多支持255个字符)