C/C++程序持续运行期间输入输出解决方案

  • 最近在写一个电梯模拟程序的时候又开始在实时输入的地方开 始犯愁。
    问题是这样的:
    要完整的模拟电梯运行,那么电梯在运行的过程中就必须能有乘客上下,而这个上下是由电梯内外的按钮控制的,在按钮按的过程中电梯是持续运行的,所以传统的输入方式(cout、printf、getchar、getch)。
    在查阅资料后我发现有个函数非常好用**–kbhit()(#include<conio.h>)** ,这个函数的作用是检查当前是否有键盘输入,若有则返回一个非0值,否则返回0 ,有了这个函数再配合while()或者if()循环/判断下去,就有了一个大致的框架了,确认有输入之后读取,没有输入继续循环,然而一般的输入函数也不满足我们的需要,因为一般的输入都要以Enter结尾,不结尾就会导致程序停留在输入语句,我们这里最好使用getch(),getch()是一个不回显函数,当用户按下某个字符时,函数自动读取,无需按回车。

    直接上代码
    测试平台:VS2019

/*这个代码的功能是循环
输出“程序继续运行”中
接收键盘输出(不显示),
输入'#'表示结束,然后
输出'#'之前的内容*/
#include <iostream>
#include <Windows.h>
#include <conio.h>
using namespace std;

const char end = '#';

bool Function(string& str);

int main()
{
	string str;
	
	while (true)
	{
		if (Function(str))
		{
			cout << str << endl;
		}
		cout << "程序继续运行!!" << endl;
		//防止程序跑太快看不到输出做的延迟
		Sleep(1000);
	}
	return 0;
}

bool Function(string& str)
{
	while (_kbhit())
	{
		char a = _getch();
//		cout << a;
		if (a == ::end)
		{
//			cout << endl;
			return true;
		}
		else
		{
			str += a;
			return false;
		}
	}
}

新人发帖有什么不完善的地方欢迎给我留言讨论。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值