string command;
int ZaneNightTrain;
NightTrain:
cin.ignore();
getline(cin, command);
transform(command.begin(), command.end(),command.begin(), ::toupper);
if (command == "TALK TO ZANE")
{
if (ZaneNightTrain == 0)
{
cout << "\nZane: Blah Blah Blah 1\n\n";
ZaneNightTrain++;
goto NightTrain;
}
}
else if (ZaneNightTrain == 1)
{
cout << "\nZane: Blah blah blah 2\n" << endl;
ZaneNightTrain++;
goto NightTrain;
}
else if (ZaneNightTrain == 2)
{
cout << "\nBlah blah blah 3\n" << endl;
ZaneNightTrain = 0;
goto NightTrain;
}
return 0;
}
ZaneNightTrain = 0の理由はわかりません。プログラムを自動的に終了します。私は2に番号を設定することができ、それは何をしているはずです。私はそれを設定しようとしたので、彼が言う最初のことは0ではなく1であり、プログラムを終了することにもなります。私はこのコードの別のバージョンを持っていました。あなたが話す文字列の代わりに数字を入力しても問題はありません。整数の値を設定した後、プログラムが早く終了する
このような問題を解決する適切なツールは、デバッガです。スタックオーバーフローを尋ねる前に、コードを一行ずつ進める必要があります。詳しいヘルプは、[小さなプログラムをデバッグする方法(Eric Lippert)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を参照してください。最低でも、あなたはあなたが行った観察と一緒に、[編集]あなたの質問あなたの問題を再現[、最小完全、かつ検証](http://stackoverflow.com/help/mcve)の例を含むようにする必要があります\しますデバッガ。 –
この質問は現在、推測なしには答えられません。示唆:これらのgotoを良い、テスト可能な条件を持つループに置き換えてから、条件に入るものを見てください。なぜ自分のことをとても難しくするのですか? – user4581301
'command'が" ZONEに話しかける "のでなければ、' ZaneNightTrain'が1または2以外であれば、関数の最後のリターンが実行されます。 – 1201ProgramAlarm