c++ - 出错时cin做什么

标签 c++ error-handling cin

#include<iostream>;

int main()
{
    int a = 1;
    int b = 2;
    std::cin >> a >> b;
    std::cout << a << "+" << b << "=" << a+b << std::endl;
    return 0;
}

当我输入 3 4 时,输出将是 3+4=7,好吧,这很奇怪; 但是当我输入a b时,输出是0+0=0(为什么是0和0?); 最令人困惑的是,一个4,它会是0+0=0(为什么不是'0+4=4'?????); 然后我写另一个程序。

#include<iostream>;

int main()
{
    int a = 1;
    int b = 2;
    std::cin >> a;
    std::cin.clear();
    std::cin >> b;
    std::cout << a << "+" << b << "=" << a+b << std::endl;
    return 0;
}

当我输入a 4时,为什么还是0+0=0?不应该是0+4=4吗?

感谢所有的热心人!!

我写了prog3,测试当我不写int a=1;int b=2;

时会发生什么
2

#include <iostream>
using namespace std;
int main()
{  
    int a,b;
    cin >> a  ;
    cin >> b;
    cout<< a << "+"<< b <<"="<< a+b << endl;
    return 0;
}

再次a b时,输出0+-1218170892=-1218170892(为什么不是0+0=0??)

最佳答案

像所有 istream 一样,std::cin 有错误位。发生错误时会设置这些位。例如,您可以使用 good()bad()eof() 等函数找到错误位的值。如果您读取了错误的输入(fail() 返回 true),请使用 clear() 清除标志。您可能还需要 ignore(1); 来删除违规字符。

有关详细信息,请参阅状态函数部分。 http://en.cppreference.com/w/cpp/io/basic_ios

关于c++ - 出错时cin做什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12408848/

相关文章:

c++ - 在康威的人生游戏中分配迭代时间

javascript - 捕获头脚本中的js解析错误

javascript - 处理Node js中的多个错误

python - 为什么 "except: pass"是一种糟糕的编程习惯?

c++ 如何使用 cin 来输入这样的值?

c++ - 我不想在使用 std::cin 后换行

c++ - 如何在文本文件中添加自定义行结尾(例如,我想添加一个在所有句点之后结束的行)

c++ - 使用 Graphviz for Windows 程序可视化函数调用

c++ - 如何通过 linux 套接字将 UTF-8 文本放入 std::string

c++ - 如何指向输入流?