2017-08-11 102 views
1

我有一個應用程序,我想用它打印狀態消息。但是,有時會出現一個較短的狀態消息按照較長的狀態消息,這會導致以下情況: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

回答

2

我會重複使用'\b'(backspace)在您的情況下前輸出的長度。這似乎是相當standardized

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

如果我這樣做後面應該打印一個空行嗎? –

+0

@TVAvanHesteren它會回到當前行的開頭(我甚至不確定是否真的是你想要的那個''r'')。 – user0042

+0

我用'cout <<'\ r'<< string(StatusMessage.size(),'');'替換了你的第二行。謝謝 –

相關問題