在 c++ 中退出 for 循环

Exiting for-loop in c++

本文关键字:for 循环 退出 c++      更新时间:2023-10-16

我在代码方面至少有 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(是(或其他任何东西,它也会这样做......

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

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

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

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

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

if (svar == "ja")而不是if (svar == ja).

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