如何在Windows控制台中禁用echo?

时间:2012-02-09 20:05:03

标签: c windows console

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

我真的不想用_getch(我仍然希望 Ctrl-C )来捕捉字符。除了_getch之外,似乎只禁用了cmd的回音,但没有禁用cygwin

必须有一种重定向管道或修改控制台设置的方法。

2 个答案:

答案 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);

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