cin和循环问题

时间:2019-03-29 05:46:33

标签: c++

在使用arduino扩展我的c ++知识的过程中。我从基础开始,然后向外扩展。下面是我编写的用于获取用户名称和年龄的程序。理想情况下,如果用户正确输入了年龄,它将在最后打印出该值。

但是,如果用户输入字母,它会告诉他们,并要求输入正确的年龄。

可能不是最好的逻辑,但是我发现输入到int的字符变成0,并且由于不能将年龄设为0,因此我进行了一次输入检查,以确保输入的字符不是0。

因此由于某种原因它无法正常工作:age变量始终为零。我怀疑这可能是因为我使用了这个年龄的整数,而不是双精度数,但是...

#include "pch.h"
#include <iostream>
#include <string>

int num1, num2;
std::string Usrname;


int main()
{
    std::cout << "Name: ";
    getline(std::cin, Usrname);
    num1 = Usrname.length();

    int ok = 0;
    while (ok == 0) {
        std::cout << "Age: ";
        std::cin.get() >> num2;
        std::cin.ignore();
        if (num2 == 0) {
            std::cout << "Wrong Input, Please input ";
        }
        else { ok = 1; }
    }
    std::cout << "The Name " << Usrname << " is " << num1 << " Characters long." << std::endl;
    std::cout << Usrname << " is " << num2 << " years old." << std::endl;

    return 0;
}

1 个答案:

答案 0 :(得分:3)

std::cin.get() >> num2;

应该是

std::cin >> num2;

P.S。学习C ++的正确方法包括学习调试器的正确使用方法,尤其是无聊的逐步执行。