std :: coutを巻き戻して、行の始まりに戻る
-
27-09-2019 - |
質問
多数のファイルを処理するMac OS X向けのコマンドラインツールを作成しています。ユーザーに現在のファイルが処理されていることを示したいのですが、ターミナルウィンドウを汚染している大容量のファイルが必要ではありません。
代わりに、単一の行を使用してファイルパスを出力し、次のファイルの行の再利用をしたいと思います。出力する文字(または他のコード)はありますか std::cout
これを達成するために?
また、このツールをWindows用に再ターゲットしたい場合、ソリューションは両方のプラットフォームで同じになりますか?
解決
「 r」は、WindowsとMac OS Xの両方で機能するはずです。
何かのようなもの:
std::cout << "will not see this\rwill see this" << std::flush;
std::cout << std::endl; // all done
他のヒント
私はMacにアクセスできませんが、純粋なコンソールの観点からは、これはキャリッジリターンとラインフィードのキャラクターをどのように扱うかに大きく依存します。文字通りどちらか一方をコンソールに送信できる場合は、送信したい ただ キャリッジリターン。
Macは、 *nix&Windowsとは異なるキャリッジリターンとラインフィードの両方を扱うと確信しています。
インプレースの更新を探している場合(例:現在の行を上書きする)、私は見ることをお勧めします curses
lib。これは、あなたが探していることを行うためのプラットフォームの独立した手段を提供するはずです。 (標準のC ++を使用しても、あなたが求めているもののプラットフォームに依存しない手段はありません)。
std :: coutは、「 r」をラインのbeguiningに戻すと解釈します。毎回「<< endl」を追加することを望まない場合は、「 n」を使用します。
std::cout << "this will work!\nSee... a new line!" << std::endl;