URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7827
[ Назад ]

Исходное сообщение
"g++ Обгуглилсо весь решил тут спросить"

Отправлено Mimik , 13-Янв-09 06:37 
Всем доброго времени суток.
Который день гуглю тему в сторону создания таймера в консоли на с++
немогу найти решения как сделать таймер с выводом не посторчно а с выводом в одну строку
тоесть чтоб небыло кучи строк с каждой цифрой а просто изменялись цифры

void timer(int seconds)
{
     clock_t endwait;
     endwait = clock () + (seconds * 60);
  while (clock() < endwait)
    {
       std :: cout << "time passed: " << (double)clock()<<"\n";
     // sleep(1);
       std :: cout << "\b";  
    }
}
void* thread1(void *)
{
        timer(2);    
    pthread_exit(NULL);
}

есть ли варианты?


Содержание

Сообщения в этом обсуждении
"g++ Обгуглилсо весь решил тут спросить"
Отправлено f00l , 13-Янв-09 08:37 
>[оверквотинг удален]
>
>    }
>}
>void* thread1(void *)
>{
>        timer(2);
> pthread_exit(NULL);
>}
>
>есть ли варианты?

В строке С есть понятие управляющие символы
'\b' - возврат на одну позицию назад

cout<<" time passed:";

for(;;){
  ...
  cout<<"\b"<<(double)clock(); // здесь нужно учитывать количество символов  
}


"g++ Обгуглилсо весь решил тут спросить"
Отправлено Аноним , 14-Янв-09 13:11 
>  cout<<"\b"<<(double)clock(); // здесь нужно учитывать количество символов

Или пользоватся  "\r"



"g++ Обгуглилсо весь решил тут спросить"
Отправлено BigHo , 12-Фев-09 11:10 
библиотека ncurses - разве не решение проблемы?


"g++ Обгуглилсо весь решил тут спросить"
Отправлено Аноним , 12-Фев-09 11:23 

>есть ли варианты?

Например:

while (...) { // print count
    int count = ...;
    fpos_t x;
    fgetpos(stderr, &x);
    fprintf(stderr, "%d\r", count);
    fsetpos(stderr, &x);
}