繁体   English   中英

当一个字符串值在c ++中为整数变量赋值时会发生什么?

[英]What happens when one assigns a string value to an integer variable in c++?

我刚开始学习c ++(原谅我的noobish查询)。 这是我作为练习编写的一些代码:

#include<iostream>

int main()
{
    using namespace std;

    int foo;
    cin >> foo;

    int bar;

    cin >> bar;
    cout << "foo plus bar is " << foo+bar<< endl;
    return 0;
}

现在,当输入都是数字时,此代码完全正常。 但是当我为第一个输入输入一个字符串(只是为了看看会发生什么)时,程序不会向我询问第二个输入,并且当foo plus bar is 0 ,结果为cout s。 我想知道的是,当我将字符串分配给整数变量时,为什么程序会跳过我的第二个cin 感谢您的帮助。

流具有内部状态。 如果输入失败,则设置状态以指示错误,并且所有其他输入将失败,除非该状态被清除。

在你的情况下,你应该初始化foo和bar为零。

测试流状态:

if( ! (cin >> foo)) {
    // Error
}

与酒吧相同

如果已解决输入失败,可以使用cin.clear()清除错误状态。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM