这些继续语句如何影响我的代码?

时间:2015-03-25 21:41:16

标签: c++ continue

我一直致力于Visual Basic 2013中的这个小程序,试图为用户输入命令创建一种分层结构。基本上,我希望第一个双字输入将程序指向一个代码区域,并为第二个单词提供一组响应。在这个程序中,第一个单词可以是" human"或者"动物。"这些词将程序指向选择动物或人类的功能。

#include "stdafx.h"
#include <iostream>
#include <sstream>

void ifAnimal(std::string b) //This is the set of responses for a first word of "Animal"
{

  if (b == "pig")
   {
    std::cout << "It is a pig." << std::endl;
   }

  if (b == "cow")
   {
    std::cout << "It is a cow." << std::endl;
   }
}

void ifHuman(std::string b) //This is the set of responses for a first word of "Human"
{
  if (b == "boy")
   {
    std::cout << "You are a boy." << std::endl;
   }

  if (b == "girl")
   {
    std::cout << "You are a girl." << std::endl;
   }

}

int main()
  { 



while (1)
{
    std::string t;
    std::string word;
    std::cin >> t;
    std::istringstream iss(t); // Set up the stream for processing
    int order = 0; 


    //use while loop to move through individual words
    while (iss >> word)
    {

        if (word == "animal") 
        {
            order = 1;
            continue; //something wrong with these continues
        }

        if (word == "human")
        {
            order = 2;
            continue;
        }

        if (order == 1) 
        {
            std::cout << "The if statement works" << std::endl;
            ifAnimal(word);
        }

        if (order == 2) 
        {
            std::cout << "This one too" << std::endl;
            ifHuman(word);
        }
     }

   }
  return 0;

}

问题在于,只要程序到达continue语句,就不会触发调用我的函数的if语句。根本没有显示任何文字。如果删除了continue语句,则if语句会触发,但相应的函数会出错。我不知道那些继续做的事情吗?有没有更好的方法来完成我想做的事情?

2 个答案:

答案 0 :(得分:1)

continue的含义是跳过循环的其余部分并返回顶部。如果continue被点击,continue语句将被执行后无论如何都会被执行。

您希望word同时成为两个单词,因此一旦执行ifAnimal()ifAnimal中的任何一个案例都不会被满足。当您调用该方法时,word将永远不会是"pig""cow",因为您只在word等于"animal"时调用该方法,并且您没有&# 39;之后改变它。

答案 1 :(得分:0)

继续意味着&#34;立即转到循环的顶部,然后重新开始#34;。你根本不需要它。

  //use while loop to move through individual words
    while (iss >> word)
    {
        if (word == "animal") 
        {
            order = 1;
        }
        else if (word == "human")
        {
            order = 2;
        }

        if (order == 1) 
        {
            std::cout << "The if statement works" << std::endl;
            ifAnimal(word);
        }

        if (order == 2) 
        {
            std::cout << "This one too" << std::endl;
            ifHuman(word);
        }
     }