检查 cin.fail() 中字符串变量时出错C++
Error checking cin.fail() for a string variable in C++
#include <iostream>
using namespace std;
int main()
{
int i;
cout << "Enter: " << endl;
cin >> i;
cout << cin.fail() << endl;
}
这是我进行错误检查的典型实现,以确保我输入有效的输入,这就是我所教的。我上面的代码的问题是,如果我输入"4d",它将 4 存储在变量"i"中,但将"d"留在缓冲区中,因此 cin.fail() 测试返回 false,但我希望它返回 true。如果我输入"c"或"ccc"等...cin.fail() 随心所欲地返回 true。
是否有任何适当的命令来测试我所描述的内容?
我怀疑有不止一种方法可以解决您的问题。我可以想到以下两个。
-
阅读
i
后立即获取下一个字符。如果该字符不是空格字符,则可以将其标记为错误。cin >> i; if ( cin ) // reading to i was successful. { int c = cin.get(); if (!isspace(c) ) { // There was a non whitespace character right // after the number. // Treat it as a problem } }
-
读取字符标记并检查其中是否有任何字符不是数字。
std::string token; cin >> token; for ( auto c : token ) { if (!isdigit(c) ) { // Problem } }
相关文章:
- 导入/导出变量时出错
- 在头文件中定义变量不会出错
- 分段 访问私有类变量时出错
- C++ 循环屏障中的倒计时使用原子变量出错[请无锁的解决方案]
- 变量用作C中的函数参数后出错
- 在 mingw64- 变量下的窗口中编译 openvpn3 时出错,未在范围内声明
- 如何对 int 变量应用验证,使其仅接受整数数据,并且在任何其他数据的情况下不会出错?
- 在循环中重新声明 for 循环变量时出错
- 使用静态变量未解析的外部符号/未定义的引用时出错
- 为什么当我们把变量"u"的数据类型从长整型更改为整型时,模幂会出错?
- 将值设置为 char ** 变量 c++ 时出错
- 在同一命名空间中声明变量和函数是否出错?[C++]
- 转换(常量字符*)变量出错
- Boost Python:在函数中通过引用传递变量时出错
- 将 (cin >> someVar) 的返回分配给 istream 变量时出错 C++
- 链接外部变量 c++ 时出错
- 在C++中访问静态私有变量时出错
- 为什么我在向类[C++]添加私有变量时出错
- 尝试使用全局变量时使用 Xcode C++时出错
- C++ #define 和常量变量相乘时出错