2010-12-08 24 views
5

"cout"で印刷されたテキストを変更することはできますか?私は、各パーセンテージに対して新しい行を持たなくても、何かの現在のパーセンテージを表示させたいと思います。これは可能ですか?C++ "cout"から出力を変更

+0

coutはコンソールの抽象化ではありませんが、ほとんどの端末はキャリッジリターン文字を適切に解釈します。 – lijie

+0

コンソール用のものは何ですか? – nebkat

+0

あなたはあなたの質問を明確にする必要があります。あなたが達成しようとしていることと何が "変わる"のかははっきりしていません。 –

答えて

11

これが私の作品:

std::cout << "1111"; 
std::cout << "\r"; 
std::cout << "2222"; 

\rは、キャリッジリターン記号です。 "カーソル"を行の先頭に戻します。

また、\b文字を使用することもできます。これはバックスペースです。印刷されると、1文字戻ってきます。

+0

あなたが実際に必要とする以上の3 '\ r'(改行)を持っています(あなたが' \ b'、バックスペースを意味しない限り) – Hasturkun

+0

ありがとう、私はすでにそれを編集しました。 – detunized

+0

適切な行末記号は "\ r"ではなく "\ n"です。標準ライブラリは、 "\ n"をCR-LF、LF-CR、またはあなたのプラットフォームに適したものと解釈します。 std :: endlもあり、バッファのフラッシュを強制的に強制します。 –

1

一般的には不可能です。 (coutからの出力がプリンタに直接入力されたとします。最後の行を「印刷しない」ように指示しますか?)coutは出力ストリームです。出力がどのメディアに送信されるかについての仮定はありません。その媒体の能力。特定のトリックは、あなたが望むものを達成することができますが、他のものでは恐ろしく失敗します。プレーンテキストの直接出力よりもダイナミックなものが必要な場合は、おそらくcoutが適切なツールではありません。

0

あなたが間違いなくcoutから得ないものは、端末の行の長さです。これを変更することができるので、長すぎる行を使用することがあります( '\ r'を使用すると)、更新ごとに新しい行が印刷されます。特定のプラットフォームを使用する場合は、プラットフォーム固有の関数を使用して端末のサイズを取得します(たとえば、ファイルにリダイレクトされるなど、端末に接続されていない可能性があります)。

関連する問題