忽视;cin";及使用「;kbhit“;转到另一个函数 我需要更多的帮助,使用C++, 假设我不知道自己多大了,我想按ESC返回“功能2”。 我想要的东西,当我按下ESC键时(不重要时),它会忽略“cin”并转到“function2”。 (我知道我不需要所有的图书馆) #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 使用名称空间std; int function2(); 浮球a,c; int main(){ 做{ while(kbhit()) {c=getch();} 如果(c==27) {function2();} cout

忽视;cin";及使用「;kbhit“;转到另一个函数 我需要更多的帮助,使用C++, 假设我不知道自己多大了,我想按ESC返回“功能2”。 我想要的东西,当我按下ESC键时(不重要时),它会忽略“cin”并转到“function2”。 (我知道我不需要所有的图书馆) #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 使用名称空间std; int function2(); 浮球a,c; int main(){ 做{ while(kbhit()) {c=getch();} 如果(c==27) {function2();} cout,c++,keyboard,event-handling,C++,Keyboard,Event Handling,conio.h是一个不推荐使用的非标准C库。为了从输入中获取字符,您必须通过cin(例如cin.get()),或使用依赖于系统的功能,在这种情况下,您需要查看编译器为您的平台提供的库。如果可用,请尝试getch()(另一个不可移植的函数) 您可以找到几个关于如何实现所需功能的示例。conio.h是一个不推荐使用的非标准C库。为了从输入中获取字符,您必须通过cin(例如cin.get()),或使用依赖于系统的功能,在这种情况下,您需要查看编译器为您的平台提供的库。如果可用,请尝试getch()(另

conio.h
是一个不推荐使用的非标准C库。为了从输入中获取字符,您必须通过
cin
(例如
cin.get()
),或使用依赖于系统的功能,在这种情况下,您需要查看编译器为您的平台提供的库。如果可用,请尝试
getch()
(另一个不可移植的函数)


您可以找到几个关于如何实现所需功能的示例。

conio.h
是一个不推荐使用的非标准C库。为了从输入中获取字符,您必须通过
cin
(例如
cin.get()
),或使用依赖于系统的功能,在这种情况下,您需要查看编译器为您的平台提供的库。如果可用,请尝试
getch()
(另一个不可移植的函数)


您可以找到几个实现您需要的例子。

CONIO.H不提供任何异步I/O信令的方法(更重要的是,CONIO.H甚至不是C或C++标准的一部分。我不建议在MAC或Linux上使用它)。您需要实现自己的输入系统。(基本上是重写
istream::operator>
或极其危险的
gets
)使用
getch
在特殊键上分支。我建议重新考虑您的输入设计,因为即使生成第二个线程来观看
GetKeyState
(我假设您在Windows上)屏息不能轻易中断另一个线程上的<代码> GETLINE < /> > .< P> CONIO.H不提供任何异步I/O信令的方法(更重要的是,CONIO.H甚至不是C或C++标准的一部分。我不建议在MAC或Linux上使用它)。您需要实现自己的输入系统。(基本上是重写
istream::operator>
或极其危险的
gets
)使用
getch
在特殊键上分支。我建议重新考虑您的输入设计,因为即使生成第二个线程来观看
GetKeyState
(我假设您在Windows上)屏住呼吸将不容易中断另一个线程上的
getline

除了conio.h之类提到的内容外,原始代码的另一个问题是,您正在测试浮点值,例如int
if (c==27)
假设您的输入需要字符,您应该使用char(或integer)类型(忽略可能的UTF-16键盘代码,如果您在Windows上,这很可能)

对于独立于平台的代码,您可能需要以下内容:

#include <iostream>
int function2();
int c;
int main(){
  do {
    cin >> c;
    if (c == 27) {
      function2();
    }
    cout << "How old are you?" << endl;

  } while (c != 27);
  return 0;
}

int function2() {
  cout << "!!!END!!!" << endl;
  return 0;
}
#包括
int function2();
INTC;
int main(){
做{
cin>>c;
如果(c==27){
函数2();
}

cout除了在conio.h之类的代码中提到的内容之外,您的原始代码的另一个问题是,您正在测试浮点值,例如针对int的浮点值
if (c==27)
假设您的输入需要字符,您应该使用char(或integer)类型(忽略可能的UTF-16键盘代码,如果您在Windows上,这很可能)

对于独立于平台的代码,您可能需要以下内容:

#include <iostream>
int function2();
int c;
int main(){
  do {
    cin >> c;
    if (c == 27) {
      function2();
    }
    cout << "How old are you?" << endl;

  } while (c != 27);
  return 0;
}

int function2() {
  cout << "!!!END!!!" << endl;
  return 0;
}
#包括
int function2();
INTC;
int main(){
做{
cin>>c;
如果(c==27){
函数2();
}

打电话给borland/watcom,他们想要回他们的kbhit()。@stefan:不是borland特有的,打电话给borland/watcom,他们想要回他们的kbhit()。@stefan:不是borland特有的,