首先来看一个简单的程序(编译环境为 DEV C++。):
#include <iostream>
int main()
{
std::cout << "我喜欢C++\n";
return 0;
}
以上程序在DEV C++软件下编译,会出现窗口一闪而过的问题~~当然,在VC 6.0也会出现,不过VC 6.0 只要 再 按 ctrl+F5 就可以解决~~至于出现这问题,我想应该是我的机子系统问题吧~我看网上的视频教程,他们都没有这个一闪而过的问题。呵呵,废话不说,先说下解决方法吧:
在网上,有人说在 程序的结尾加上getchar(); ,但发现不行的。而有人说system("pause"); ,这个方法确实可以解决。但需要在开头加上#include "stdlib.h" 。不然的话,程序一闪而过的问题一样没有得到解决。至于getchar();为何不行,我也想不通,所以希望路过的高手就留言写下原因。
最终的程序为这样:
#include <iostream>
#include "stdlib.h"
int main()
{
std::cout << "我喜欢C++\n";
system("pause");
return 0;
}
各位就快去试下吧~
引用原帖地址:http://hi.baidu.com/%E5%D0%D2%A3%D0%A1gg/blog/item/3bdfb65004690d12377abe25.html
解决DEV C++一闪而过的办法~~~
1.在您想要暂停的地方加上 system("pause"); 就可以使 C/C++ 程序暂停。不过,这个办法奏效的前提是系统中必须存在 pause 这个命令。此外,还需要包含标准头文件 stdlib.h(对于 C)或者 cstdlib(对于 C++)。
2.在您想要暂停的地方加上 getchar();(对于 C 和 C++)或者 cin.get();(仅适用于 C++)就可以使程序暂停,然后按回车程序就会继续执行。不过,您会发现,这种办法却不一定奏效。如果您够细心,会发现只有当 getchar();/cin.get(); 前面有接收输入的语句的时候,该办法才会失效。如果之前没有接收任何输入,该办法是 100% 奏效的!这是因为,如果前面接收了输入,输入流中可能会有残留数据,
getchar();/cin.get(); 就会直接读取输入流中的残留数据,而不会等待我们按回车。解决该问题的办法是,先清空输入流,再用 getchar();/cin.get();。清空输入流的办法如下:
1). /* 适用于 C 和 C++。需要包含 stdio.h(对于 C)或者 cstdio(对于 C++)*/
while ( (c = getchar()) != '\n' && c != EOF ) ; /* 对于 C 和 C++ */
2). cin.clear(); // 仅适用于 C++,而且还需要包含标准头文件 limits
cin.ignore( numeric_limits<streamsize>::max(), '\n' );
我已经试过,方法2可以在Visual c++ 2008编译环境下试验功能
原帖来源:http://blog.163.com/sars-sheng@126/blog/static/76349095201023110162450/