pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

使用 cin 的良好輸入驗證循環 - C++

Good input validation loop using cin - C++(使用 cin 的良好輸入驗證循環 - C++)
本文介紹了使用 cin 的良好輸入驗證循環 - C++的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我在上我的第二堂 OOP 課,我的第一堂課是用 C# 教授的,所以我是 C++ 的新手,目前我正在練習使用 cin 進行輸入驗證.所以這是我的問題:

I'm in my second OOP class, and my first class was taught in C#, so I'm new to C++ and currently I am practicing input validation using cin. So here's my question:

這個循環是我構建的一種很好的驗證輸入的方法嗎?或者有更常見/可接受的方法嗎?

Is this loop I constructed a pretty good way of validating input? Or is there a more common/accepted way of doing it?

謝謝!

代碼:

int taxableIncome;
int error;

// input validation loop
do
{
    error = 0;
    cout << "Please enter in your taxable income: ";
    cin >> taxableIncome;
    if (cin.fail())
    {
        cout << "Please enter a valid integer" << endl;
        error = 1;
        cin.clear();
        cin.ignore(80, '
');
    }
}while(error == 1);

推薦答案

我不太喜歡為 iostream 打開異常.I/O 錯誤還不夠特殊,因為錯誤通常很可能發生.我更喜歡只在不太頻繁的錯誤情況下使用異常.

I'm not a huge fan of turning on exceptions for iostreams. I/O errors aren't exceptional enough, in that errors are often very likely. I prefer only to use exceptions for less frequent error conditions.

代碼還不錯,但跳過 80 個字符有點隨意,如果你擺弄循環,錯誤變量不是必需的(如果你保留它應該是 bool).您可以將 cin 的讀取內容直接放入 if 中,這可能更像是 Perl 慣用語.

The code isn't bad, but skipping 80 characters is a bit arbitrary, and the error variable isn't necessary if you fiddle with the loop (and should be bool if you keep it). You can put the read from cin directly into an if, which is perhaps more of a Perl idiom.

這是我的看法:

int taxableIncome;

for (;;) {
    cout << "Please enter in your taxable income: ";
    if (cin >> taxableIncome) {
        break;
    } else {
        cout << "Please enter a valid integer" << endl;
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '
');
    }
}

除了只跳過 80 個字符之外,這些只是小問題,更多的是喜歡的風格.

Apart from only skipping 80 characters, these are only minor quibbles, and are more a matter of preferred style.

這篇關于使用 cin 的良好輸入驗證循環 - C++的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

How can I read and manipulate CSV file data in C++?(如何在 C++ 中讀取和操作 CSV 文件數據?)
In C++ why can#39;t I write a for() loop like this: for( int i = 1, double i2 = 0; (在 C++ 中,為什么我不能像這樣編寫 for() 循環: for( int i = 1, double i2 = 0;)
How does OpenMP handle nested loops?(OpenMP 如何處理嵌套循環?)
Reusing thread in loop c++(在循環 C++ 中重用線程)
Precise thread sleep needed. Max 1ms error(需要精確的線程睡眠.最大 1ms 誤差)
Is there ever a need for a quot;do {...} while ( )quot; loop?(是否需要“do {...} while ()?環形?)
主站蜘蛛池模板: 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 江苏密集柜_电动_手动_移动_盛隆柜业江苏档案密集柜厂家 | 播音主持培训-中影人教育播音主持学苑「官网」-中国艺考界的贵族学校 | 冷凝水循环试验箱-冷凝水试验箱-可编程高低温试验箱厂家-上海巨为(www.juweigroup.com) | 植筋胶-粘钢胶-碳纤维布-碳纤维板-环氧砂浆-加固材料生产厂家-上海巧力建筑科技有限公司 | 无锡不干胶标签,卷筒标签,无锡瑞彩包装材料有限公司 | 隐形纱窗|防护纱窗|金刚网防盗纱窗|韦柏纱窗|上海青木装潢制品有限公司|纱窗国标起草单位 | 冷藏车厂家|冷藏车价格|小型冷藏车|散装饲料车厂家|程力专用汽车股份有限公司销售十二分公司 | 样品瓶(色谱样品瓶)百科-浙江哈迈科技有限公司 | 氧氮氢联合测定仪-联测仪-氧氮氢元素分析仪-江苏品彦光电 | 智慧食堂_食堂管理系统_食堂订餐_食堂消费系统—客易捷 | 石家庄救护车出租_重症转院_跨省跨境医疗转送_活动赛事医疗保障_康复出院_放弃治疗_腾康26年医疗护送转诊团队 | 对辊破碎机-液压双辊式,强力双齿辊,四辊破碎机价格_巩义市金联机械设备生产厂家 | 沈飞防静电地板__机房地板-深圳市沈飞防静电设备有限公司 | 北京浩云律师事务所-企业法律顾问_破产清算等公司法律服务 | 新能源汽车教学设备厂家报价[汽车教学设备运营18年]-恒信教具 | 密度电子天平-内校-外校电子天平-沈阳龙腾电子有限公司 | 旅游规划_旅游策划_乡村旅游规划_景区规划设计_旅游规划设计公司-北京绿道联合旅游规划设计有限公司 | 仓储笼_仓储货架_南京货架_仓储货架厂家_南京货架价格低-南京一品仓储设备制造公司 | 无尘烘箱_洁净烤箱_真空无氧烤箱_半导体烤箱_电子防潮柜-深圳市怡和兴机电 | 防爆电机生产厂家,YBK3电动机,YBX3系列防爆电机,YBX4节防爆电机--河南省南洋防爆电机有限公司 | 安徽成考网-安徽成人高考网 | 企小优-企业数字化转型服务商_网络推广_网络推广公司 | 电动高尔夫球车|电动观光车|电动巡逻车|电动越野车厂家-绿友机械集团股份有限公司 | 洗地机_全自动洗地机_手推式洗地机【上海滢皓环保】 | EDLC超级法拉电容器_LIC锂离子超级电容_超级电容模组_软包单体电容电池_轴向薄膜电力电容器_深圳佳名兴电容有限公司_JMX专注中高端品牌电容生产厂家 | 牛奶检测仪-乳成分分析仪-北京海谊| 转向助力泵/水泵/发电机皮带轮生产厂家-锦州华一精工有限公司 | 许昌奥仕达自动化设备有限公司| 吉林污水处理公司,长春工业污水处理设备,净水设备-长春易洁环保科技有限公司 | 三佳互联一站式网站建设服务|网站开发|网站设计|网站搭建服务商 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 多物理场仿真软件_电磁仿真软件_EDA多物理场仿真软件 - 裕兴木兰 | 代理记账_免费注册公司_营业执照代办_资质代办-【乐财汇】 | 土壤养分检测仪|土壤水分|土壤紧实度测定仪|土壤墒情监测系统-土壤仪器网 | 智慧物联网行业一站式解决方案提供商-北京东成基业 | 卫生纸复卷机|抽纸机|卫生纸加工设备|做卫生纸机器|小型卫生纸加工需要什么设备|卫生纸机器设备多少钱一台|许昌恒源纸品机械有限公司 | 青海电动密集架_智能密集架_密集架价格-盛隆柜业青海档案密集架厂家 | 视频教程导航网_视频教程之家_视频教程大全_最新视频教程分享发布平台 | 开锐教育-学历提升-职称评定-职业资格培训-积分入户 | 卫生纸复卷机|抽纸机|卫生纸加工设备|做卫生纸机器|小型卫生纸加工需要什么设备|卫生纸机器设备多少钱一台|许昌恒源纸品机械有限公司 | 北京网站建设首页,做网站选【优站网】,专注北京网站建设,北京网站推广,天津网站建设,天津网站推广,小程序,手机APP的开发。 |