1

そのため、私は自分の C++ プログラムを「Enter キーを押して続行する」ようにしようとしてきました。これは、すべての C++ プログラマーが大人になる前に経験しなければならない不安な段階です。いじくり回した後、ランダムなアドバイスを信頼して使用しました:

while(userWins<2)
{
    roundResult = playRound(); 

    if(roundResult>0)
    {
        userWins++;
        cout << "Du vann! Det står nu " << userWins << "-" << cpuWins << "." << endl ;
        cin.get();
        cin.ignore(std::numeric_limits<streamsize>::max(),'\n');
    }
}

これには、私が試した cin.get() と cin.ignore() の他のすべての組み合わせとほとんど同じ問題があります-毎回同じことを行うわけではありません。2回のエンターストロークを待つ場合もあれば、1回でOKの場合もあります。何が起こっているか知っている人はいますか?

4

1 に答える 1

1

ストリームは、ここでの仕事に適したツールではありません。C++ 標準には、コンソールを制御する移植可能な方法がありません。ストリームは、インタラクティブな UI ではなく、一連の文字の読み取り/書き込みを可能にするための抽象化です。

必要な動作を確実に実現するには、cursesなどのサードパーティ ライブラリを使用するか、ターゲット プラットフォームのコンソール API と直接やり取りする必要があります。

于 2013-07-11T19:54:18.030 に答える