Это не спит, как ожидалось - PullRequest
       7

Это не спит, как ожидалось

0 голосов
/ 06 февраля 2012

Учитывая, что это печатает что-то вроде

[E] [F] [A] [C] [A] 
[B] [F] [B] [B] [D] 
[C] [C] [C] [C] [C]

Следующие 5 секунд ждут и печатают строку вместо выполнения каждого [...] и ждут 1 секунду, почему?

    for (int i = 0; i <= 2; i++) {
        for (int j = 0; j <= 4; j++) {
            int a = randomInt(0, 5);
            sleep(1);
            cout << "[" << allowed[a] << "] ";
            usciti[i][j] = allowed[a];
        }
        cout << endl;
    }

Ответы [ 3 ]

6 голосов
/ 06 февраля 2012

Это, вероятно, потому, что вы не очищаете поток std :: cout до endl (который также сбрасывается).Вы можете использовать вызов cout.flush(), чтобы сделать это.

3 голосов
/ 06 февраля 2012

Это должно работать:

for (int i = 0; i <= 2; ++i) {
    for (int j = 0; j <= 4; ++j) {
        int a = randomInt(0, 5);
        sleep(1);
        cout << "[" << allowed[a] << "] " << std::flush;
        usciti[i][j] = allowed[a];
    }
    cout << endl;
}

Как и вы flush the cout.cout << endl; затем просто начнет новую строку.

В вашем коде вы пишете в буфер, пока не очистите его с помощью endl (плюс добавление новой строки).Подробнее см. здесь .

1 голос
/ 06 февраля 2012

Может быть, вывод буферизован?Посмотрите на эту функцию: http://www.cplusplus.com/reference/iostream/ostream/flush/

...