在C语言中,使用格式化输入函数scanf("%d",&i)(i为int)时,如果输入了字符,则会将字符转化为对应的ASCII码并赋给i。

但在C++中使用cin时输入非法字符,如需要int类型,但却输入了char,那std::cin流会进入失败状态,并且此后所有的输入尝试都不再进行操作而是直接返回。

在第一段代码中,若cin输入了非法字符,i将不会被修改并一直保持输入非法字符之前的值,此时程序将进入死循环,且无法通过cin再次输入。

//不良的形式
int main()
{std::cout << "Enter numbers separated by whitespace (use -1 to quit): ";int i = 0;while (i != -1) {std::cin >> i;  //在循环体内输入std::cout << "You entered " << i << '\n';}
}

而在第二段代码中,由于输入流处于bool型的上下文中,若输入了非法字符,则输入流会进入非法状态并返回NULL,于是便可退出循环。

//良好的形式
int main()
{std::cout << "Enter a number, or -1 to quit: ";int i = 0;while (std::cin >> i) {  //在控制表达式中输入if (i == -1) break;std::cout << "You entered " << i << '\n';}
}

如果在输入时需要对类型进行判断,类型错误时需要重新输入,可参考以下代码。

int num;
cin >> num;
while (cin.fail()) { //返回cin的状态cin.clear();     //清除cin的错误状态cin.ignore();    //忽略缓冲区的内容,直到EOFcout << "输入错误,请重新输入" << endl;cin >> num;      //重新输入
}

对C++中使用cin输入非法字符(数据格式不匹配)的说明相关推荐

  1. c语言输入中含有非法字符 请重新输入,C语言中对scanf输入非法字符的检查和处理...

    在C中scanf()函数返回成功读入的变量的个数.如果它没有读取任何项目(输入非法字符,例如:希望得到数字,而用户却输入的是字符),scanf()返回值为0.当检测到"文件结尾"是 ...

  2. c#中文件路径出现非法字符怎么办?解决也容易

    c#中如果需要生成文件路径,有时会抛出"文件路径中出现非法字符"的异常,这时我们就会找到这个非法的字符串,然后Replace替换掉.其实net类库提供了非法字符的数组,我们直接循环 ...

  3. 解决js函数replace禁止输入框输入非法字符,光标回到文字最后问题(兼容ie、谷歌)

    js代码: /*获取光标位置*/ function getCursorPos(obj) { var CaretPos = 0; // IE Support if (document.selection ...

  4. c语言中向计算机输入一个字符的函数是,计算机c语言输入输出函数格式详解.docx...

    1.输入和输出: 输入:输入也叫读,数据由内核流向用户程序 输出:输出也称写.打印,数据由用户程序流向内核 以下介绍一些输入输出函数,尽管都是一些有缺陷的函数,但比较适合初学者使用 2.printf用 ...

  5. 怎么限制表单用户的输入行为,拒绝用户恶意输入非法字符

    今天来说一种限制表单用户输入,假设有一个表单, 要求只能输入数字, 我们会怎么做呢? 我们可以用change事件监听用户的输入情况 ,用e.target.value获取用户输入的值, 这个时候就会出现 ...

  6. 仿WINDWS无限级Ajax菜单树升级1.2版(菜单名支持非法字符)

    仿WINDWS无限级Ajax菜单树升级1.2版(菜单名支持非法字符)          1.1版出现了输入非法字符与空格后导致程序出错的BUG,我对程序再次升级为1.2版,这次将支持非法字符式的菜单名 ...

  7. IDEA的全局搜索框中,无法输入中文

    问题描述:在idea的全局搜索框(快捷键Ctrl+Shift+F)中,无法输入中文字符,只能输入英文字符 解决办法:清除idea缓存并重启 1.检查输入法 我用的搜狗输入法,把和idea冲突的快捷键全 ...

  8. 限制Input框输入非法值

    是通过正则来限制输入框输入的值(通过正则就可以自定义规则) 1. 先提前声明了两个数据,一个是与后端交互的合法值,一个是展示的临时值 // 表单信息const calculationForm = re ...

  9. long在C语言中是非法字符吗,C程序设计实践——实验指导

    一.课程的总体目标和具体要求 总体目标: 利用C语言和程序设计方法编制程序,借助计算机解决问题的基本能力.(支撑毕业能力要求1)独立解决文本处理.数学上的一些问题,编写较规范化的代码.(支撑毕业能力要 ...

最新文章

  1. 互联网黄金十年的黄昏——是人工智能的黎明还是裁员的长夜
  2. 完全卸载Oracle方法(亲测有效)
  3. jQuery设置radio、select、checkbox只读属性后,如何在后台得到数据
  4. 统计消息总数_和公牛一战,库里创三个记录,耀眼的还是三分球总数
  5. [原]第一次遭遇Oracle的Bug,纪念一下 |ORA-00600 kmgs_pre_process_request_6|
  6. 解析云原生与云计算本质区别,别再傻傻分不清楚了!
  7. Content-Script-Type的设置好象没多大用处,或许我不知道有什么用
  8. Linux SVN 服务器配置以及客户端使用
  9. 使用SVN clang: error: linker command failed with exit code 1 (use -v to see invocation)
  10. C++学习笔记----2.4 C++对象的内存模型
  11. 位说法的由来_南方土地庙有榕树的原因,为何会有榕树不容人的说法?
  12. 我的数据分析师转型之路,从零到阿里数据分析师
  13. word无法创建工作文件请检查临时环境变量
  14. 简述计算机无法开机时故障处理方法,主板出问题了怎么办?电脑主板常见问题与故障处理方法...
  15. Java网络编程socket基础学习
  16. Ubuntu安装xxx依赖错误解决方法
  17. 为什么要上机械制造业ERP系统?对企业有什么帮助?
  18. 00无人机简介以及课程介绍2020-07-03
  19. MATLAB矩阵画法,MATLAB矩阵与数组
  20. 张静君的“商脉通”和企业博客

热门文章

  1. java古典兔子问题c语言,Java递归算法经典实例(经典兔子问题)
  2. 东华大学2021计算机考研,东华大学2021考研考试大纲:计算机及软件工程专业基础综合...
  3. 翻译:Fast dynamic extracted honeypots in cloud computing--4.DYNAMIC HONEYPOT SERVICE
  4. 计算机打印机使用视频教程,Win7系统电脑连接网络打印机的操作方法教程[多图]...
  5. jquery 自定义正方形图标_让你的电脑桌面图标动起来,智能管理电脑文件
  6. 2022.12.11日报:指纹浏览器新增字体指纹
  7. 新加坡运输物流,中国到新加坡跨国集运,海运空运新加坡全境派送到您收货地址
  8. 苹果手机怎么拦截垃圾短信,亲测有效的方法,图文教学
  9. 关于codewarrior 安装到64位的win7系统
  10. OSChina 周三乱弹 ——掌握写代码核心科技的名人们!