-1

ルーレットクラスをテストしていますが、cin.ignore()が機能しないため、Visual Studioで出力が表示されません。また、ここで何が起こっているのかわかりません。

コマンドラインウィンドウが消える理由と、このコードのcin.ignore()が呼び出されない理由を説明できますか?

どうもありがとう!

#include "Bet.h"
#include "Table.h"
#include <iostream>

using namespace std;
using namespace Roulette;


int main()
{
    cout << "Enter numbers for Split bet:" << endl;
    short answer;
    vector<short>* Selection = new vector<short>;
    for (short i = 0; i < 2; ++i)
    {
        cin >> answer;
        Selection->push_back(answer);
    }

    cout << "Enter how many chips and chip worth:" << endl;
    short chips, worth;
    cin >> chips >> worth;

    Bet* MyBet = new Bet(TableLayout::European, BetName::Split, chips, worth, Selection);

    Bet* Complex = new Bet(TableLayout::European, BetName::VoisinsDeZero, 1, 1);

    Complex->PrintProperties();

    cin.ignore(); // THIS IS IGNORED!!! WHY??? please...

    delete Selection;
    Selection = nullptr;
    delete Complex;
    delete MyBet;
    return 0;
}

編集:

F5キーを押してプログラムを実行し、次のように数字を入力します。

1入力2入力1入力1入力

ここでcmdがなくなり、プログラムは機能しないものは何でもcin.get()(またはcin.ignore())をスキップします。

4

1 に答える 1

1

cin>>チップ>>価値;

たとえば、この行で最後1を入力してEnterキーを押すと、A\nはストリームに未読のままになります。

するとcin.ignore();、残りの文字が抽出され、プログラムが終了します。に変更cin.ignore();するcin.ignore(2);と、機能するはずです。

于 2012-04-19T00:25:23.100 に答える