cin.fail()检查格式错误或提取失败(如输字母到int),cin.bad()检查底层流损坏(如句柄异常);fail()为真时非法字符仍驻缓冲区,需clear()重置标志位并ignore()清空残留。

cin输入失败时的错误标志怎么查
直接看 cin.fail() 或 cin.bad() ——前者表示格式错误或流提取失败(比如往 int 里输字母),后者表示底层流状态损坏(如文件句柄异常),日常输入校验基本只用 fail()。
注意:cin.fail() 为 true 时,错误字符仍留在输入缓冲区,不清理会反复触发失败。常见现象是:输错一次后,后续所有 cin >> 都跳过、卡住或读到意外值。
-
cin.clear()必须先调,用于重置错误标志位 -
cin.ignore(numeric_limits紧跟其后,清空当前行剩余内容(包括换行符)::max(), '\n') - 别只用
cin.ignore(1, '\n')——它只扔一个字符,输 “abc123” 后还剩 “bc123\n”,下次仍失败
读取整数时输了字母,怎么安全重试
典型场景:用户本该输数字,却打了 “quit” 或空格加字母。不能让程序崩溃或无限循环,得提示重输。
!(cin >> x)
C++免费学习笔记(深入):立即使用
在学习笔记中,你将探索 C++ 的入门与实战技巧!











