C++ _getch()不';无法在windows server 2012上工作

C++ _getch()不';无法在windows server 2012上工作,c++,c,getch,windows-server-2012,C++,C,Getch,Windows Server 2012,我需要一个DLL的用户可以键入密码,而不是在屏幕上回声。 因此,我使用\u getch()来获取没有回声的字符 //get character with no echo ch = _getch(); 并使用microsoft vs2005编译代码。 它在windows server 2003/2008上工作,但在新的windows server 2012上,它会将字符回显到屏幕上。 我的问题是为什么\u getch()仅在windows server 2012上

我需要一个DLL的用户可以键入密码,而不是在屏幕上回声。 因此,我使用
\u getch()
来获取没有回声的字符

        //get character with no echo
        ch = _getch();
并使用microsoft vs2005编译代码。
它在windows server 2003/2008上工作,但在新的windows server 2012上,它会将字符回显到屏幕上。

我的问题是为什么
\u getch()
仅在windows server 2012上回显字符?如何修复它?

使用cin.get()代替getch()。

最后我发现
\u getch()
工作得很好,问题是我使用
fgetpos
fsetpos
检查
stdin
中是否有流。我将它们替换为
fseek(stdin,0,SEEK_END)
,它在2012年目前运行良好。您不应该使用
\u isatty
检查流是否为
stdin
?谢谢您的建议。我改为像这样使用
\u isatty
int re=\u isatty(\u fileno(stdin))它的作品。
\u isatty
fseek
好吗?为什么?(我只在windows操作系统上使用)非常感谢。是的,
\u isatty
是正确的方法。我不知道你说的“为什么”是什么意思。。。我不认为我曾经读过任何地方,代码< > fStest< /Cord>应该被用来确定输入类型。问题是C和C++的标记;C.C.GET.GED()/<代码>在C中不可用,但是(a)如果OP将问题标记为C和C++,他可能正在寻找一种在两种语言中都能工作的解决方案,并且(b)<代码> CIN。