VS C++ 初学者日记(1) 如何使程序运行完成后保留cmd屏幕

作为一个C++初学者,我经常遇到这样一个问题:在利用Visual Studio调试程序时,程序运行完成后无法保留cmd屏幕而无法查看运行的结果。

网上有一种简便的处理方法,即在程序的末尾加上一句cin.get(),通过强行多读取一个字符的方式,来实现驻屏。但是,这种方法并不总是奏效。当程序中多次输出过字符串,且字符串中含有换行符时,程序末尾的cin.get()似乎在读取之前换行时的换行符,或者换行符之后的某个字符(没有完全搞清楚机制)。在这种情况下,如果使用cin.get(),往往需要多加几个cin.get()才能实现驻屏,而如果前面的程序里有不特定次数的字符串输出,那么尝试用这种方式驻屏就会失败了。

于是在学习了string类之后,想到一个办法,能够实现如下的功能:

1. 在程序末尾处显示提示句:Press Q or q key to quit...

2. 允许操作者输入的一行字符,并读取这一行字符;

3. 检验这一行字符里是否出现过Q或者q,如果出现了,则退出,否则保持屏幕并重新输出提示句。

虽然这个功能只对初学者调试程序有用,却也着实有点意思,在此记录:

// NewQuit.cpp -- Try New String Processing
#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::getline;

int main()
{
	string exitflag("\n");
	cout << "Try New Quit Processing. Start Test..." << endl;
	cout << "Press Q or q key to quit..." << endl;
	getline(cin,exitflag);
	while (exitflag.find('q') == string::npos && exitflag.find('Q') == string::npos)
	{
		cout << "Press Q or q key to quit..." << endl;
		getline(cin, exitflag);
	}

	return 0;
}


程序中使用一个exitflag作为是否退出屏幕的字符串,并且使用到string类中的getline和find方法。

通过getline保证读到的是用户在提示语句之后输出的行,通过find在行字符中寻找是否存在Q或q字符。

其中string::npos是当find函数没有找到相应字符之后的输出,程序中的逻辑即为如果没有找到相应的Q或q字符则一直循环提示过程。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值