1

このプログラムが最初の print ステートメントでさえ、何も出力しない理由がわかりません。何が問題になる可能性がありますか?

を使用して正常にコンパイルされますg++ filename.cpp

#include "deck.h"
#include "hand.h"
#include <vector>
#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
    cout << "not even this";

    vector<Hand> hands;
    Deck deck;
    int players; 
    int seed;
    int sizeOfHand = 5;
    int i;
    vector<Hand>::iterator itr;

    cout << "Enter seed: ";
    cin >> seed;
    srand(unsigned(seed));

    cout << "Enter number of players: ";
    cin >> players; 

    for (i = 0; i < players; i++) {
        hands.push_back(Hand());
    }

    deck.Shuffle();
    for (i = 0; i < sizeOfHand; i++) {
        vector<Card> cards = deck.Deal(players);
        for (itr = hands.begin(); itr < hands.end(); itr++) {
            cout << "1";
            itr->add(*cards.begin());
            cards.erase(cards.begin());    
        }
    }

    for (itr = hands.begin(), i=1; itr < hands.end(); itr++, i++) {
        cout << "Player " + i;
        itr->showHand();
    }
}
4

3 に答える 3

3

ストリームの連続バッファリングを有効にする必要があります。これを の先頭に追加しますmain:

std::cout << std::unitbuf;

これにより、各出力操作の後にストリームがフラッシュされます。

于 2013-10-31T22:40:58.477 に答える
3

何が起こっているかという点で、あなたの質問はすでに答えられていますが、改行だけが解決策ではありません。

出力と同じ行に入力が必要な場合は、次のようにフラッシュできます。

cout << "Enter seed: " << flush;
cin >> seed;

実際には内部的endlに a を呼び出すことに注意してください。flushただ書くのとは違い"\n"ます。

于 2013-10-31T22:26:47.387 に答える