C++ 检查C+;中字符串变量的cin.fail()时出错+; #包括 使用名称空间std; int main() { int i; 我不能; 我想有不止一种方法可以解决你的问题。我可以想到以下两种
读取C++ 检查C+;中字符串变量的cin.fail()时出错+; #包括 使用名称空间std; int main() { int i; 我不能; 我想有不止一种方法可以解决你的问题。我可以想到以下两种,c++,error-handling,C++,Error Handling,读取i后立即获取下一个字符。如果该字符不是空白字符,则可以将其标记为错误 #include <iostream> using namespace std; int main() { int i; cout << "Enter: " << endl; cin >> i; cout << cin.fail() << endl; } 读取字符标记并检查其中是否有非数字的字符 cin >> i;
i
后立即获取下一个字符。如果该字符不是空白字符,则可以将其标记为错误
#include <iostream>
using namespace std;
int main()
{
int i;
cout << "Enter: " << endl;
cin >> i;
cout << cin.fail() << endl;
}
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
}
}
以字符串形式阅读,然后使用isdigit()检查感谢您的回复。实际上,我这样做是作为一个班级的家庭作业,我们不会因为使用我们没有学到的东西而感到厌烦(我们没有复习isdigit()).我们的讲师只是想让我们进行错误测试,但没有提到测试的深度。有没有办法用cin.fail()来进行测试?而(cin)你是指cin>>i,对吗?你是对的。很抱歉输入错误
std::string token;
cin >> token;
for ( auto c : token )
{
if (!isdigit(c) )
{
// Problem
}
}