C++ 命令行中实现回车默认输入

    前言:第一篇博客,就让它见证我的成长过程吧。

    近日写一个串口通信的实例,中间有一个环节是关于参数的配置,为了避免过多输入的冗余,于是想通过回车默认的方式来确认。

    cin << a ;    //该方式直接回车无效,以Carl+Z 或者 非法字符结束

    cin.get(); && cin.getline();    //接收回车,get接收单个字符,getline接收一行字符串

    cin.peek();    //返回指针指向的当前字符,但是只是观测,指针并不后移

    cin.putback(c);    //将c字符归还缓冲区

所以,想到的办法是,取一个字符,判断是否为回车,倘若不是,归还该字符,并且以正确的格式输入。对于多种格式的参数输入,为了提高函数的重用性,使用模板函数。部分代码如下:

template <typename T>
void input(T &t)
{
	char c;
	cin.get(c);
	if (c != '\n')
	{
		cin.putback(c);
		cin >> t;
		cin.get();    //清楚输入后留下的回车,或者直接清空缓存区也可
	}
}

int main()
{
	/* INIT 串口相关默认参数*/
	UINT  initport = 3;
	UINT  baud = CBR_9600;
	char  parity = 'N';
	UINT  databits = 8;
	UINT  stopsbits = 1;
	char  ret = 'N';

	cout << "输入端口号(Default:3):";
	input<UINT>(initport);

	cout << "输入波特率(Default:9600):";
	input<UINT>(baud);

	cout << "输入是否奇偶校验(Default:'N'):";
	input<char>(parity);

	cout << "输入数据位(Default:8):";
	input<UINT>(databits);

	cout << "输入停止位(Default:1):";
	input<UINT>(stopsbits);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值