これまでずっとGUIばかりやっていましたが、来年はCUIもやっていくことになりそうなのでとりあえずMS Docsなど眺めています。
標準出力にエスケープシーケンス(\x1b
)を渡すことで文字の色を変えたりすでに出力している文字を消したりできる。プログレスバー的なのはこれで実装しているわけですね(サイトによっては \033
だったりもしますが、こちらは8進数で意味は同じ)。
PowerShellだとデフォルトでこれに対応していないようですが、SetConsoleModeでENABLE_VIRTUAL_TERMINAL_PROCESSINGを設定してあげれば良いようです(SamplesのEnableVTModeがまんま流用できる)。
コードの一覧はWikipediaの方が見やすくまとまっているかも。