WindowsコンソールのCアプリケーションでエコーを無効にするにはどうすればよいですか?Windowsコンソールでエコーを無効にする方法はありますか?
_getch
(まだのCtrl-C)の文字をキャプチャしたいとは思っていません。 _getchだけでなく、cmd
ではエコーを無効にするように見えますが、cygwin
ではエコーを無効にしているようです。
パイプのリダイレクトやコンソール設定の変更が必要です。
WindowsコンソールのCアプリケーションでエコーを無効にするにはどうすればよいですか?Windowsコンソールでエコーを無効にする方法はありますか?
_getch
(まだのCtrl-C)の文字をキャプチャしたいとは思っていません。 _getchだけでなく、cmd
ではエコーを無効にするように見えますが、cygwin
ではエコーを無効にしているようです。
パイプのリダイレクトやコンソール設定の変更が必要です。
多分SetConsoleMode(codeguruから盗まれた):[クロスプラットフォームコード]で使用
#include <iostream>
#include <string>
#include <windows.h>
int main()
{
HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
DWORD mode = 0;
GetConsoleMode(hStdin, &mode);
SetConsoleMode(hStdin, mode & (~ENABLE_ECHO_INPUT));
std::string s;
std::getline(std::cin, s);
std::cout << s << "\n";
return 0;
}//main
はい、私の考えでは、freopenを使って基本的にstdoutファイル記述子の後ろにあるファイルを変更するのが最も簡単な方法です。
あなたが一度に出力を保存したくない場合、あなたは(は/ dev /のように/ dev/nullのを書くことができるはず
freopen("C:\some_file.txt", "w", stdout);
を使用してファイルにコンソール出力をリダイレクトすることができnullは、私はあなたが以下のようなものが動作するはずですので、「NUL」または「\デバイス\ヌル」
を試すことができていないことを()のUnixであるが、Windowsで:
freopen("\Device\Null", "w", stdout);
申し訳ありませんが、私は私は実際にそれを試すことができません窓はありませんが、それは主なアイデアです。
同じ考え方(http://code.google.com/p/xpost/source/browse/src/lib /xpost_compat.c#87)は、Windowsのケースをきれいにカバーします。 –