0

わかりましたので、C ++を学ぼうとしています。シミュレーションを作成していましたが、cinはうまくいきません:(

void Simulation::initialize(){
    cout<<"Choose number of players: " <<endl;
    cin>> numberOfPlayer;
    string name;
    int accurasy;
    int life;
    for(int index=0; index <=numberOfPlayer;++index){
        cout<<"Enter name, accurasy and life for player"<<index +1 <<": " <<endl;
        cin>>name;
        cin>>accurasy;
        cin>>life;
        Kombatant comb(name,accurasy,life);
        vect->push_back(comb);

    }
}

これは私にとってはうまくいかないコードです。プレイヤーをシミュレーションに追加しようとしています。forループに入るまで、すべてが期待どおりに機能します。何らかの理由で、私が生き返るまで、最初のループでしか機能しません。次に、life 入力とその後のすべての入力 (すべてのループのすべての入力) をスキップします。問題が何であるか誰にも考えがありますか?

4

1 に答える 1

1

これは、最後の改行がまだ入力バッファーにあるためです。したがって、名前の入力をループすると、改行が表示され、空の入力が得られます。

入力ストリームに明示的にスキップするように指示する必要があります。

// all your input...

// Skip over the newline in the input buffer
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n')
于 2013-03-05T12:30:07.627 に答える