Обновлять выходные данные каждую секунду

#c

#c

Вопрос:

 #include<iostream>
#include<cmath>
#include<ctime>
#include<cstdlib>
#include<windows.h>
using namespace std; 

void z()
{
    Sleep(100);
} 

class Car
{
    double fuel;
    double speed;
    double X;
    double Y;
public:
    Car(double n, char *type)
    {
        fuel=n;
        speed=120;
    }
    double Speed()
    {
        return speed;
    }
    void Position(double p, double q)
    {
        X = p;
        Y = q;
    }
    void Move()
    {
        X=X (Speed()/3600);
        Y=Y (Speed()/3600);
    }
};
int main()
{
    Car c(70,"Car");
    double x,y;
    c.Position(3.2,2.2);
    cout<<c.Speed()<<endl;
    while(1)
    {
        c.Move();
        c.Position(x,y);
        cout<<x<<","<<y<<endl;
        z();
    }
    return 0;
}
  

Я хочу показывать изменения положения в одной строке, что означает, что каждую секунду значение position будет обновляться и показывать его в той же строке, заменяя старое значение, но не создавая никакой новой строки.

Комментарии:

1. Это невозможно со стандартной библиотекой. Вам нужно использовать функции, зависящие от платформы, или подобную библиотеку ncurses .

2. Можете ли вы привести мне какой-либо пример этого?

3. Вы можете вернуть курсор в начало строки, используя cout<<"r"<<x<<","<<y; . Обратите внимание, что я не пишу endl в конце. Кроме того, есть некоторые проблемы с вашим кодом: вы не выполняете ни инициализацию x , y main() ни ввод, ни обновление. Кроме того, нет способа получить значения X и Y из вашего Car класса.

4. На всякий случай b переместите курсор на одну позицию назад, см. echo -e 'abz' .

5. Поддерживая правильный ответ @maddin45, я бы добавил, что вы, вероятно, захотите вывести кучу пробелов перед возвратом каретки r, чтобы перезаписать старый вывод. Затем обязательно очистите выходные данные с помощью «std::cout << std::flush».