在c ++中退出for循环

时间:2011-10-01 15:34:57

标签: c++ for-loop

我的代码至少有2个问题,但我会从这个问题开始。

以下代码似乎无法正常运行:

cout<<"Vill du mata in en post till? (ja/nej)"<<endl; //I'm asking if the user wants to run the for-loop one more time or brake with ja(yes) or nej(no).
cin>>svar;

if (svar == ja)
{
        return 0;      
}

问题在于,如果用户回答“否”,则制动,而是通过for循环运行而不“运行”或“执行”cin>>行。

我做了一些故障排除,并发现如果我将if (svar == ja)更改为if (svar != nej)它会制动for循环,但问题是即使我输入了ja(是)或其他任何内容...

Heres是完整的代码,感谢您提供的任何帮助:

#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;

struct telefonbok 
{
    string namn;
    string nummer;           
};

int main()
{
   int ja, nej;
   telefonbok post[10];
   bool svar; //behövs för frågan om man vill fortsätta.

for (int i=0; i<10; i++)
{
     cout<<"Lagg till en post i telefonboken."<<endl;
     cout<<"Ange personens namn: "<<endl;
     cin>>post[i].namn;
     cout<<"Ange personens nummer :"<<endl;
     cin>>post[i].nummer;
     cout<<"Vill du mata in en post till? (ja/nej)"<<endl;
     cin>>svar;

     if (svar == ja) //stoppar slingan om man svarar nej
     {
         return 0;      
     }

}

  system("PAUSE");
  return 0;
}

3 个答案:

答案 0 :(得分:3)

变量janej未初始化。将svar与它们进行比较是徒劳的。

答案 1 :(得分:3)

Svar应该是一个字符串(因为您希望用户输入字符串“ja”或“nej”,而不是代码所需的整数),您应该检查"nej"而不是"ja"考虑你问的问题。如果您只想退出循环而不是函数,请使用break

// ...
string svar = "";

for (int i=0; i<10; i++)
{
    // ...
    cout<<"Vill du mata in en post till? (ja/nej)"<<endl;
    cin >> svar;

    if (svar == "nej")
    {
        return 0;
        // If you only want to exit the loop and not the function you can use:
        // break;
    }
}

答案 2 :(得分:1)

查看代码,很明显您正在尝试将字符串与未初始化的int ja进行比较。如果要将svar与将返回有意义值的值进行比较,则需要将字符串与字符串进行比较,即

if (svar == "ja")代替if (svar == ja)

我无法在代码中看到使用整数“ja”和“nej”的其他任何地方。他们的目的是什么?