我真的不想用_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);
对不起,因为我没有窗户,我实际上无法尝试,但这是主要的想法。