簡體   English   中英

使用C ++循環鑽取的編程原理和實踐。 找不到退出循環的方法

[英]Programming Principles and Practice using C++ while-loop drill. Can't find a way to exit the loop

我正在閱讀Bjarne Stroustrup的“編程:使用C ++的原理和實踐”,並且有一個演練告訴我編寫一個程序,該程序包含一個while循環,該循環(每次循環)讀入兩個int,然后然后打印它們,並在輸入“ |”時退出。我已經編寫了程序(我相信有一種更簡單的編寫方法,但是我有使事情復雜化的“禮物”),但是我無法找到退出循環的方法,下面是代碼:

#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語句來檢查答案是否等於“ |”,則編譯器認為我的意思是它的int值(124或類似的值),並在我寫124時終止循環,這顯然不是我所要的。想。 我試圖在互聯網上尋找一種將int轉換為char的方法,但是我對此一無所知。 最簡單的解決方案是最好的。

如果要讀取的下一個非空白字符不是數字,則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. 如果您的任務只是打印數字,則可以只使用字符串。

  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; } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM