如何在Windows控制台C应用程序中禁用echo?
我真的不想用_getch
(我仍然希望 Ctrl-C )来捕捉字符。除了_getch之外,似乎只禁用了cmd
的回音,但没有禁用cygwin
。
必须有一种重定向管道或修改控制台设置的方法。
答案 0 :(得分:5)
也许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
答案 1 :(得分:0)
是的,最简单的方法是使用freopen基本上改变stdout文件描述符后面打开的文件。
您可以使用
将控制台输出重定向到文件freopen("C:\some_file.txt", "w", stdout);
如果你不想一次存储输出,你应该能够编写/ dev / null之类的(/ dev / null在Unix中),但是在windows中(我没有你可以)尝试“nul”或“\ Device \ Null”
所以类似下面的内容应该有效:
freopen("\Device\Null", "w", stdout);
对不起我实际上无法尝试,因为我没有窗户,但这是主要的想法。