忽视;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特有的,