C ++:没有收到预期的输出

问题描述 投票:1回答:2

我正在尝试从我的教程书中检查C ++代码。我用CodeBlocks IDE编写了这个:

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
/*...*/
using namespace std;
/*...*/
int main (void){

    cout << "Please enter name and age: \n\n:>";
    string _sInput = "";
    int _intInput = -1;
    cin >> _sInput >> _intInput;
    cout << "Hello " << _sInput << "!\n";
    cout << "You have aged " << _intInput << " years.";
}

根据Stroustrup先生在书中讨论的内容,现在我已经给出了变量_intInputan初始值,如果我输入错误的数据,如James Boy,我应该收到这样的输出:

Hello James!

You have aged -1 years.

但我得到的是You have aged 0 years.就像我没有给出初始价值的时间。 我的代码有什么问题或什么?!

c++ input output
2个回答
2
投票

从C ++ 11开始,当从istream读取整数或浮点数失败时,目标变量设置为0.有关详细信息,请参阅this (cppreference.com)this (stack overflow.com)

这意味着,您不能使用sentinel值来检测解析错误,您必须使用例如fail() method来检查是否存在某些错误。


2
投票
© www.soinside.com 2019 - 2024. All rights reserved.