当一个特定的角色被击中时,我该如何打破循环?
How can I break a loop when a specific character has been hit?
假设我有一个像
这样的循环for(int i = 0; i < 100000; i++)
{
crunch_data(i);
if(i_has_been_hit())
break;
}
和我想退出循环每当我按 I 在键盘上。现在,下面的方法将不起作用,因为std::cin
块:
bool i_has_been_hit(){
char a;
std::cin >> a;
return a == 'i';
}
是否有一个功能可以让我检查键盘是否被击中而不阻塞?如果它有任何区别,我在Win32上使用g++与CodeBlocks。
如果您使用的是conio.h
可用的Win32,您可以使用通常的kbhit()
和getch()
组合:
#include <conio.h>
#include <iostream>
int main(){
for(int i=0;i<100000;i++)
{
std::cout<<"Hi";
if(kbhit() && getch() == 'i'){
break;
}
// other code
}
}
你是说一个完美的非阻塞I/O模型吗?如果是这样的话,这很难实现,我不知道有什么现有的方法可以做到,但是你可以这样做
使用_kbhit ()
for(int i=0;i<100000;i++)
{
cout<<"Hi";
while (true) {
if (_kbhit()) {
char a = _getch();
// act on character a in whatever way you want
}
Sleep(100);
if(a=='i')
break;
}
相关文章:
- Python中的for循环与C++有何不同
- 使用输入打破 OpenMP 中的循环
- 打破循环引用在C++中更优雅
- 打破一会儿循环C++
- 纯引用而不是weak_ptr来打破循环依赖关系
- 如何在Arduino中打破循环?
- 当用户输入负数C 时,请打破循环
- C :使用文件末端(CTRL Z)结束一个循环似乎打破了我程序的其余部分
- 如何打破循环以在C 中获取整数数组
- C 如何打破while查找循环
- 无锁单生产者/单消费者循环缓冲区-CPU推测能否打破内存屏障逻辑
- 如何在按键按下C 循环运行,但将其打破每个升降机
- 通过回调功能,打破一个循环的最佳方法是什么?
- 试图打破一段循环时,卡在无限的循环中
- 我怎样才能打破这个标准::shared_ptr参考循环
- 如何打破这个 for 循环:"for (; cin >> A;);`
- 如何使用 goto 打破嵌套循环
- 如何打破 libevent 的调度循环
- C++打破循环包括
- 打破无限循环