Windowsのコンソール

okuokuさんとこへのツッコミです。

コンソールのcodepageをUTF-8(65001)に設定するのってなんでダメなんだっけ?

そもそもコマンドプロンプトがchcp 65001してもまともに動かない。フォントはレジストリをいじらないと変えられないし(うまく変わらないこともある)、Windows側のIMEもcp65001だと動いてくれない。さらに文字幅計算たまにおかしいし、改行変換の挙動も妖しい。

WriteConsoleWはコンソールの文字コード設定に応じてwcharを正常に変換してくれる

違う、WriteConsoleWは変換しない。WriteConsoleWはUnicodeを直接描画している。ので、現在のロケールにない文字も出力できる。systeminfoコマンドとか使うと、Vistaでは「Microsoft® Windows Vista™」とかでてくるし。

Win32コンソールはコピペが面倒

簡易編集モードにすればいいのでは?

Write/ReadConsoleはコンソールにしか使えないのでstdout/in/errがコンソールかどうかを判別するコードが必要

ちゃんとそういう関数があります。