2017-08-11 14 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 ^

コードIしかし、時には短いステータスメッセージが次のような状況につながる長いステータスメッセージを、次のことが発生します使用しています:

cout << StatusMessage << '\r'; 

この問題を克服して最初に消去することはできますか新しい行を印刷する前に行全体?好ましくは、クロスプラットフォームソリューションで、今の私は、Windows

に取り組んでいます:私はすでに、しかし、これは削除され、複数のラインの洗浄をもたらすことができる、\bまたはspacesの行を上書きしようとしました私の\rアプローチの機能性

+2

サンプルコードとあなたが –

+0

C++コンソールの任意の概念を持っていないスペースを使用しようとしたとき、あなたの問題は何であったかそのouputを、と、明確にしてください。あなたが移植性を持っていれば、私はコンソールライブラリを探すでしょう。 – NathanOliver

答えて

2

私はあなたのケースの前の出力の長さの中で繰り返し'\b'(バックスペース)を使用したいと思います。 standardizedかなりのようだ:

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

私はこのことをお互いに背後に置くと、空の行を印刷するはずですか? –

+0

@TVAvanHesteren現在の行の先頭に戻ります( '' \ r ''が実際にあなたが望むものであるかどうかはわかりません)。 – user0042

+0

2番目の行を 'cout << '\ r' << string(StatusMessage.size()、 '');'に置き換えました。ありがとう –

関連する問題