如何打破循环?

seadaughter 2006-03-15 10:03:58
控制台应用程序中,console有一个循环
while(true)
{
cout<<......//输出了不同信息...
function();//调用某函数..
}

function()
{}
如果不采取措施,循环将会一直执行下去,那么我想实现一个功能,让用户敲击一下键盘随便一个键就可以停止循环,而继续执行循环后面的东西。。。。怎么办?
...全文
403 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
MagicCarmack 2006-03-18
  • 打赏
  • 举报
回复
用Error Handling 来处理是比较有创意的想法
weijieut 2006-03-18
  • 打赏
  • 举报
回复
我也不大懂,关注ing...
吃狼的豆腐 2006-03-18
  • 打赏
  • 举报
回复
continue
break
goto
donglin2008 2006-03-17
  • 打赏
  • 举报
回复
直接加break;就可以了阿
shine51151 2006-03-17
  • 打赏
  • 举报
回复
向高手们致敬 学习了!
zzw820626 2006-03-16
  • 打赏
  • 举报
回复
try {}
catch(...)
是个好想法的说。
du51 2006-03-16
  • 打赏
  • 举报
回复
bioskey(1),bioskey(0)配合使用
还可以返回哪个键被按下..从而做出不同的动作.


不过,不知道通用不通用.
cenlmmx 2006-03-16
  • 打赏
  • 举报
回复
iGray(i_冲锋陷阵) 是的极是,不要while(true),比如一般监听线程里都是while(某个条件变量),这样可以按照正常流程来结束while循环,退出线程.
Jinhao 2006-03-16
  • 打赏
  • 举报
回复
to cenlmmx(学海无涯苦作舟)

对于线程来说,用异常是很方便的.因为,这样不许要考虑当前是处在某个循环中,或者循环中的循环..或者函数中的函数 等等,想要退出就throw,就好比想要退出就exit(1)
不过前提是,线程函数在最外层必须要catch这个异常.
iGray 2006-03-16
  • 打赏
  • 举报
回复
对于递归内的跳出,通常用异常来实现。这样能保证栈回退过程的对象析构。

楼主这个地方,把while(true)改为一个标识变量即可while(isBreak),isBreak为一个bool型变量。当条件满足时,在function内将isBreak=false;即可
iamcaicainiao 2006-03-16
  • 打赏
  • 举报
回复
你的while循环里面加一条捕捉,键盘的语句。然后。break应该可以吧。
citywanderer2005 2006-03-16
  • 打赏
  • 举报
回复
不错,学习了
Jinhao 2006-03-15
  • 打赏
  • 举报
回复
goto 太恶心

try
{
while(true)
{
cout<<......//输出了不同信息...
function();//调用某函数.. 条件到达就throw
}
}
catch(...){}
tonyzhengjq 2006-03-15
  • 打赏
  • 举报
回复
用goto可以直接跳的呀!呵呵
sparrow009 2006-03-15
  • 打赏
  • 举报
回复
谢谢搂住和A_B_C_ABC(黄瓜)
学东西了
哈哈哈哈
SEUU 2006-03-15
  • 打赏
  • 举报
回复
还有,你的分多给我一点吧,我是来得分的,我只要星星!
0黄瓜0 2006-03-15
  • 打赏
  • 举报
回复
#include <conio.h>
int main()
{
while(true)// msg.message!=WM_KEYDOWN )
{
if(_kbhit())
break;
//cout<<......//输出了不同信息...
//function();//调用某函数..
}

return 0;
}
/*************************
函数名:_kbhit
函数原型;int _kbhit (void);
头文件:<conio.h>
功能和返回值:如果按了一个键,_kbhit返回一个非0值;否则返回0。
如果该函数返回非0值,说明缓冲区中等待着一个击键,此后程序可以调用getch或getchar读取该击键。

*/
SEUU 2006-03-15
  • 打赏
  • 举报
回复
又没有返回值,这里能跳得出来吗,

除非用EXIT(0)
linzhengqun 2006-03-15
  • 打赏
  • 举报
回复
不必是多线程中的,可以用Windows的API来实现
每一次循环都用ReadConsoleInputAPI检测是否有键盘事件,如果有就退出循环

不过这样做的坏处就是与平台绑定在一起了。
huauh2o 2006-03-15
  • 打赏
  • 举报
回复
用kbhit()函数
加载更多回复(6)

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧