C++回车换行送入长字符串后跟一个较短的字符串

问题描述:

我有一个应用程序,我想用它打印状态消息。但是,有时会出现一个较短的状态消息按照较长的状态消息,这会导致以下情况:C++回车换行送入长字符串后跟一个较短的字符串

长消息:

this is the long status message which is longer than the short one 

短消息:

This is the short status messagewhich is longer than the short one 
//this one should end here ^

的代码我使用的是:

cout << StatusMessage << '\r'; 

我该如何克服这个问题并首先擦除打印新行之前的整行?最好有一个跨平台的解决方案,但现在我的工作在Windows

:我已经尝试过覆盖与\bspaces行,然而,这可能导致多行清洗从而消除了我的\r方法的功能。

+2

请澄清,与示例代码和它的输出中,当你试图使用空格 –

+0

C++没有控制台的任何概念,你的问题是什么。如果你可移植性,我会寻找一个控制台库。 – NathanOliver

我会重复使用'\b'(backspace)在您的情况下前输出的长度。这似乎是相当standardized

cout << StatusMessage << '\r'; 
cout << std::string(StatusMessage.size(),'\b'); 
+0

如果我这样做后面应该打印一个空行吗? –

+0

@TVAvanHesteren它会回到当前行的开头(我甚至不确定是否真的是你想要的那个''r'')。 – user0042

+0

我用'cout