web-dev-qa-db-ja.com

std :: coutを巻き戻して、行の先頭に戻ります

たくさんのファイルを処理するMacOSX用のコマンドラインツールを書いています。処理中の現在のファイルをユーザーに表示したいのですが、ターミナルウィンドウを汚染する何億ものファイルは必要ありません。

代わりに、1行を使用してファイルパスを出力し、その行を次のファイルに再利用したいと思います。これを実現するためにstd::coutに出力する文字(または他のコード)はありますか?

また、このツールをWindows用に再ターゲットしたい場合、ソリューションは両方のプラットフォームで同じでしょうか?

24
fbrereto

「\ r」は、WindowsとMac OSXの両方で機能するはずです。

何かのようなもの:

std::cout << "will not see this\rwill see this" << std::flush;
std::cout << std::endl; // all done
23
Logan Capaldo

私はMacにアクセスできませんが、純粋なコンソールの観点からは、これはキャリッジリターンとラインフィード文字の処理方法に大きく依存します。文字通りどちらか一方をコンソールに送信できる場合は、justキャリッジリターンを送信します。

Macは、キャリッジリターンとラインフィードの両方を* nix&windowsとは異なる方法で処理すると確信しています。

インプレースアップデート(現在の行を上書きするなど)を探している場合は、curseslibを確認することをお勧めします。これは、あなたが探していることを行うためのプラットフォームに依存しない手段を提供するはずです。 (標準のC++を使用していても、プラットフォームに依存しない方法で要求しているものがないため)。

1
Nathan Ernst