当int输入失败时如何突破循环

时间:2014-09-24 04:33:45

标签: c++ break formatted-input

我需要编写一个程序,它要求你输入两个整数,然后输出相同的两个整数,但如果你输入'|',它将结束程序。

这就是我所拥有的,对我来说它应该有效,但不幸的是它没有。

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
#include <iomanip>
using namespace std;

int main()
{
    int var1 = 0;
    int var2 = 0;

    while(1)
    {
        cout << "Please enter two numbers.\n";
        cin >> var1;
        cin >> var2;

        if(var1 == '|')
            break;

        else
        {
            if(var2 == '|')
                break;

            else
            {
                cout << var1 << ' ' << var2 << '\n';
            }
        }       
    }
}

我确信这是一个我想念的简单概念,但显然会非常感激任何帮助。

4 个答案:

答案 0 :(得分:2)

当您读取整数时,像|这样的用户输入只会导致(无声)错误,这会将cin置于错误模式。

在清除错误模式之前,将忽略进一步的输入操作,因此您将获得无限循环。

而是使用std::getline标题中的<string>将用户输入作为字符串读取。检查输入行是否以数字或“|”开头。如果是数字,则使用例如转换为整数std::stoi


语言的无限循环内置语法是for(;;)。它的实际优点是Visual C ++不会发出关于常量条件表达式的愚蠢警告。

答案 1 :(得分:0)

尝试使用声明var1和var2作为char类型 如果它需要int,那么试试

 if(var2 == 124)

答案 2 :(得分:0)

如果要接受除数字编号以外的任何字符,则var1和var2不能是整数类型。所以你必须用char声明字符串。

我确定你需要两个数字来做一些计算功能,所以将var1和var2从string转换为整数类型。

参考: http://en.cppreference.com/w/cpp/string/basic_string/stol

您对&#34;如何结束某项计划&#34;

的问题的答案

你可以使用

exit(1);

代码示例:

#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;

int main()
{
    string var1,var2;
    int num1,num2;

    cout << "Please enter two numbers.\n";
    cin>>var1;

    if(var1 != "|")
    {
        num1 = ::atoi(var1.c_str());
    }
    else
    {
        cout<<"Programs Terminated."<<endl;
        exit(1);
    }

    cin>>var2;

    if(var2 != "|")
    {
        num2 = ::atoi(var2.c_str());
    }
    else
    {
        cout<<"Programs Terminated."<<endl;
        exit(1);
    }

    cout<<"\nSum of 2 number: "<<num1+num2<<endl;
}

答案 3 :(得分:0)

而不是从if(var1 == '|')开始的所有代码,请执行以下操作:

if ( !cin )
    break;

cout << var1 << ' ' << var2 << '\n';

当您使用<<读取int时,如果输入实际上不包含int,则会将cin置于失败状态。测试!cin检查cin是否处于失败状态。

要阅读更多相关信息,请阅读任何C ++书籍或参考书。