Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 检查C+;中字符串变量的cin.fail()时出错+; #包括 使用名称空间std; int main() { int i; 我不能; 我想有不止一种方法可以解决你的问题。我可以想到以下两种_C++_Error Handling - Fatal编程技术网

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
       }
    }