重置错误输入?

name61 2008-04-09 09:41:26
			while (!(cin>>sa[i]))
{
cin.clear(); //重置输入
while (cin.get() != '\n')
continue; //解除错误的输入
cout<<"Please enter a double"<<"("<<(i+1)<<")"<<": ";
}


搞不懂为什么一定要加上,当然我去掉
while (cin.get() != '\n')
continue;

后肯定是不行的
有人能给我详细解释一下吗??
...全文
83 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jieao111 2008-04-09
  • 打赏
  • 举报
回复
是的。。cin.clear()只是更正了cin.fail()
jieao111 2008-04-09
  • 打赏
  • 举报
回复

cin.clear();
fflush(stdin);

或者
 cin.clear();            
cin.sync();


清除缓冲区也行
name61 2008-04-09
  • 打赏
  • 举报
回复
是不是cin.clear();并没有清除'\n'啊
所以需要下面的语句过滤掉回车?
如果“回车”(或许有别的说法)没有被过滤掉,那么错误的输入将一直保留在输入队列中。。。
jieao111 2008-04-09
  • 打赏
  • 举报
回复
while (cin.get() != '\n')
continue;
可以退出你的错误循环
jieao111 2008-04-09
  • 打赏
  • 举报
回复
输入错误,一直在循环语句下,所以一直输出cout
name61 2008-04-09
  • 打赏
  • 举报
回复
还是没搞明白,有人能有汉语把我刚才列出的代码解释出来吗?

当我将那个去掉后,只要输入错误,程序会不停的显示cout的内容

为什么会这样呢?

不好意思啊,我就是这样喜欢研究一些SB问题
Supper_Jerry 2008-04-09
  • 打赏
  • 举报
回复
把所有输入的字符清空。
clear只是重置输入。并没有清空缓冲区
ttkk_2007 2008-04-09
  • 打赏
  • 举报
回复

while (cin>>sa[i])
{
cout<<"Please enter a double"<<"("<<(i+1)<<")"<<": ";
++i;
}

wuyn_1984 2008-04-09
  • 打赏
  • 举报
回复
当然 我是判断cin 接收类型错误
wuyn_1984 2008-04-09
  • 打赏
  • 举报
回复
我是用的
cin.clear();
cin.ignore();
wangya55 2008-04-09
  • 打赏
  • 举报
回复
具体的程序要求是什么啊?
wangya55 2008-04-09
  • 打赏
  • 举报
回复
判断是否能够输入的条件应该是输入不能够为空
即如果输入中有'\n'则重新输入
name61 2008-04-09
  • 打赏
  • 举报
回复
哈哈
明白了点
谢谢各位达人。。
PowerBI系列之Power Query专题1.  获取数据 数据源种类介绍和获取Excel数据源输入数据和拷贝数据:创建辅助表解析Json/XML数据格式获取Web网页数据和URL添加动态参数连接数据的四种模式:Import、DirectQuery、Live Connection、Dual双 属于混合模式连接数据库:Sql server、 Mysql(直连但是必须先安装一个mysql插件)DirectQuery直连查询:Sql serverODBC方式获取数据表关联或多个Sql或调用存储过程获取数据SQL中动态传参和自定义函数: sql中使用参数或数据库名称使用参数连接Sharepoint和OneDrive数据源连接Dataset和Dataflow 替换本地数据源为Sharepoint数据源并保留数据处理操作 终止当前数据刷新Loading:Cancel Query数据源设置-重置数据连接凭证PBIDS连接数据源创建和使用报表模块(输入或值列表)利用报表模板和参数控制线下报表数据权限DirectQuery启用自动页面刷新和更改检测管理聚合表提高DirectQuery查询性能动态M查询参数提高DirectQuery查询性能添加数据刷新时间 DateTime.LocalNow()和Getdate()2.  数据清洗和M语言M语言和官方文档介绍PowerQuery中查阅M函数:=#shared, Ctrl+Space提示数据清洗之常用技能:提升标题、更改数据类型、保留删除错误或空行,删除重复项、选择列和删除列、填充单元格、合并列、拆分、提取、替换、条件替换、添加自定义列,添加条件列、添加索引列、分组、添加年月日列、追加和合并查询透视和逆透视以及转置合并单元格的Excel文件处理导入文件夹中多Excel文件并合并解决多文件合并中列顺序不一致使用参数和函数批量导入文件 文本中提取中文、英文、数字等处理双引号转义 列拆分详解解决列名改变错误解决列丢失错误动态显示、排序和重命名列为所有列名添加前缀列名字母大写和分隔符调整Trim标题列中的多余空格如何处理load数据错误为什么load的Excel数据有null空行为什么load的Excel数据标题在第二行灵活添加占位符规范同类相似数据数据按多列排序为分组添加Index序号分组内值合并诊断工具分析数据处理过程PowerQuery小技巧分享 新冠病例活动轨迹地图标识 

64,179

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧