C++ 如何使用_getch()的键盘功能,就像使用getline()一样?

C++ 如何使用_getch()的键盘功能,就像使用getline()一样?,c++,getline,getch,C++,Getline,Getch,我的问题是,当我的用户在终端中推动制表时,我想做一件特殊的事情。我的第一个代码解释如下: char buffer[100]; while (true) { std::cin.getline(buffer, 100); // do IMMEDIATELY something if 'tabulation' was used ? } 所以我问自己如何检查每个字符?我试过使用\u getch() while (true) { c = _getch(); if (c ==

我的问题是,当我的用户在终端中推动制表时,我想做一件特殊的事情。我的第一个代码解释如下:

char buffer[100];

while (true)
{
    std::cin.getline(buffer, 100); // do IMMEDIATELY something if 'tabulation' was used ?

}
所以我问自己如何检查每个字符?我试过使用\u getch()

while (true)
{
    c = _getch();

    if (c == '\t')
        // do something special
    else
        std::cout << (char)c;
}
while(true)
{
c=_getch();
如果(c=='\t')
//做点特别的事
其他的
std::cout假设您指的是来自Microsoft C运行时库的函数:

\u getch\u getwch函数从 控制台,而不回显字符。这些功能都不能使用 用于读取CTRL+C。当读取功能键或箭头键时,每个 函数必须调用两次;第一次调用返回0或0xE0,并且 第二个调用返回实际的键代码

因此,如果
\u getch()
返回0或0xE0(224),则必须再次调用该函数以查看按下了哪个特定键

至少在我的机器上,这些“扩展”字符代码如下(十进制):

  • 0.59=F1
  • 0 60=F2
  • 0.61=F3
  • 0.62=F4
  • 0.63=F5
  • 0 64=F6
  • 0.65=F7
  • 0.66=F8
  • 0.67=F9
  • 0 68=F10
  • 224 71=家
  • 224 72=↑ (向上箭头)
  • 224 73=翻页
  • 224 75=← (左箭头)
  • 22477=→ (右箭头)
  • 224 79=结束
  • 224 80=↓ (向下箭头)
  • 224 81=向下翻页
  • 224 82=插入
  • 224 83=删除
  • 224133=F11
  • 224134=F12

至于如何处理这些代码,请查看和相关的控制台API函数。< /P>不,标准C++没有。这是OS和终端的具体信息。为什么不使用STDIN或SCANF?你读到了解释值“代码> > GETCH < /Cord>可以返回的文档的一部分吗?你知道你可能需要调用<代码>e> 两次获得一个按键代码?@Gugg这也没用。@CaptainObvlious我读过,但即使我能检测到那些按键代码,我能用它做什么?例如,我能检测到箭头键代码,但我剩下的解决方案只是模拟光标移动。或者,你想恢复“本机光标移动”功能。如果我不太清楚,我很抱歉