carriage return ("\r") nie zwraca uwagi na sleep(x)

0

Witam, chcę napisac prosty programik, który będzie mi odliczał czas, ale nie chcę, żeby wypisywał liczby jedna pod drugą, tylko, zeby zastępował poprzednią.

przy:

for (a=1; a<=60; a++){
  cout << a;
  sleep(1);
  cout << "\n"}

dziala normalnie-wypisuje wynik, czeka sekundę, wypisuje wynik i tak w kółko

jednak przy:

for (a=1; a<=60; a++){
  cout << a;
  sleep(1);
  cout << "\r"}

czeka 60 sekund po czym wypisuje 0. Wygląda to jakby "\r" wypisywał się pomimo sleepa, a dopiero potem realizował się sleep. To tylko moje spekulacje, jak ktoś ma sensowniejsze wytłumaczenie/ lepszy sposób/ jakas rade to będę wdzięczny.

0

"\r" to powrót karetki... na początek wiersza.

0

no wiem, właśnie chcę, żeby wypisał liczbę, poczekał sekundę, po czym wrócił na początek wiersza i wypisał liczbę...

0

cout << a << flush;

0

ok, działa, dzięki wielkie

0

I jeszcze przestaw sleep po wypisywaniu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1