Reputation: 1241
I have an application which I want to print status messages with. However, sometimes it occurs that a shorter status message follows a longer status message, which leads to the following situation:
Long message:
this is the long status message which is longer than the short one
Shorter message:
This is the short status messagewhich is longer than the short one
//this one should end here ^
The code I'm using is:
cout << StatusMessage << '\r';
How can I overcome this problem and firstly erase the whole line before printing the new line? Preferably with a cross platform solution, but for now I'm working on Windows
Note: I already tried to overwrite the line with \b
or spaces
, however this may result in a multiple line cleaning which removes the functionality of my \r
approach.
Upvotes: 1
Views: 184
Reputation: 8018
I'd use '\b'
(backspace) repeatedly in the length of the former output for your case. It seems to be pretty standardized:
cout << StatusMessage << '\r';
cout << std::string(StatusMessage.size(),'\b');
Upvotes: 2