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(" "); 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; }
通过getline保证读到的是用户在提示语句之后输出的行,通过find在行字符中寻找是否存在Q或q字符。
其中string::npos是当find函数没有找到相应字符之后的输出,程序中的逻辑即为如果没有找到相应的Q或q字符则一直循环提示过程。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。