如何在Windows控制台中禁用回声?

如何在Windows控制台C应用程序中禁用回显?

我真的不想用_getch来捕捉字符(我仍然想要Ctrl-C )。 除了_getch似乎只能禁用cmd回声,而不是在cygwin

必须有一种方法来redirectpipe道或修改控制台设置。

也许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基本上改变在标准输出文件描述符后面打开的文件。

您可以使用重定向控制台输出到一个文件

 freopen("C:\some_file.txt", "w", stdout); 

如果你不想一次存储输出,你应该可以写一个/ dev / null(像Unix中的/ dev / null),但是在windows中(我没有,你可以尝试“nul “或”\ Device \ Null“

所以像下面的东西应该工作:

 freopen("\Device\Null", "w", stdout); 

对不起,因为我没有窗户,我实际上无法尝试,但这是主要的想法。