使用C ++ while循环训练编程原理和实践。无法找到退出循环的方法

时间:2015-10-19 16:51:11

标签: c++ while-loop exit

我正在通过Bjarne Stroustrup'编程:使用C ++的原则和实践"并且我有一个演习,告诉我编写一个程序,该程序由一个while循环组成(每次循环)读取两个整数然后打印它们并且它应该在" |时退出。 "进入。我已经写好了这个程序(我确定有更简单的写作方式,但是我已经得到了#34;礼物和过度复杂的东西),但我可以& #39;找到一种退出循环的方法。这是代码:

#include <iostream>
#include <vector>

int main()
{

    std::vector<int> answers;
    int answer;
    int intCounter=0;

    while(answers.size()<=2  )
    {

        if(answer=='|')
        {
            return 0;
        }
        std::cin>>answer;
        answers.push_back(answer);
        ++intCounter;

        if(intCounter==2)
        {
            for(int x : answers)
            {
                std::cout<<x<<'\n';
            }
            answers.clear();
            intCounter=0;
        }

    }

    return 0;
}

基本上如果我写一个if语句来检查答案是否等于&#39; |&#39;,编译器认为我的意思是它的int值(124或类似的东西)并在我关闭时终止循环写124,这显然不是我想要的。我试图通过互联网查看将int转换为char的方法,但我从那时起就无法理解任何东西。最简单的解决方案是最好的。

2 个答案:

答案 0 :(得分:0)

当要读取的下一个非空白字符不是数字时,

cin >> answer将失败。您可以使用该行为来结束循环。

// Break inside the loop.
while( true  )
{
    std::cin>>answer;

    // If there was an error in reading, break out of the loop.
    if ( !std::cin )
       break;

    answers.push_back(answer);

    ++intCounter;

    if(intCounter==2)
    {
        for(int x : answers)
        {
            std::cout<<x<<'\n';
        }
        answers.clear();
        intCounter=0;
    }
}

答案 1 :(得分:0)

两个变化:

  1. 如果你的任务是打印数字,你可以使用字符串。

  2. 在输入之前,您正在检查|的答案值。 所以

    #include<iostream>
    #include <vector>
    #include<string>
    using namespace std;
    int main(){
    
    std::vector<string> answers;
    string answer;
    int intCounter=0;
    
    while(answers.size()<=2  ){
    
    std::cin>>answer;
    //after input
    if(answer=="|"){
    return 0;
    }
    answers.push_back(answer);
    ++intCounter;
    
    if(intCounter==2){
    for(int x=0;x< answers.size();x++){
    std::cout<<answers[x]<<'\n';
    }
    answers.clear();
    intCounter=0;
    }
    }
    
    return 0;
    }