如何在C++中使程序保持活动状态?

4

我是使用 Visual C++ 2010 Express,并且刚开始学习 C++

当我想要运行这段代码时:

#include <iostream>
using namespace std;

int main(){
    cout << "Hello World! ";
    return 0;
}

程序可以正常运行,但是我启动程序后它立即退出了,我该如何让程序保持运行状态?

7个回答

7
在Visual Studio中,你有两个选项来运行程序。完全没有必要修改你的代码,就像其他帖子所建议的那样。
1)使用调试运行。你可能正在使用这个选项,如果想让它在任何地方停止,你需要设置断点。
2)不使用调试运行。这应该会保留控制台窗口,并提示你在窗口关闭之前按下一个键。

+1 为读心和指出真正原因。发帖者在保持程序运行和控制台窗口消失之间感到困惑。 - André Caron

6
如果只是为了阅读输出结果,您不需要让程序一直运行,只需在命令提示符窗口中运行即可保持输出结果可见。您也可以使用调试器在特定点处中断执行。
有很多方法可以用代码实现,有好的,也有不好的:
#include <iostream>
using namespace std;

int main()
{
    cout << "Hello World! ";
    cin.get(); // Wait for some input, as suggested by PigBen
    return 0;
}

或者:

#include <iostream>
using namespace std;

int main()
{
    cout << "Hello World! ";
    Sleep(1000); // one second
    return 0;
}

或者,尽管这是一个不好的想法:

#include <iostream>
using namespace std;

int main()
{
    cout << "Hello World! ";
    while (true) { }
    return 0;
}

你想达到什么目的? 编辑:需要注意,无限循环虽然可以让程序一直运行,但是不好。

istream有()运算符吗? - Benjamin Lindley
@PigBen:不太确定,但仔细想了想,好像没有。稍微调整了一下,更加正确了。 - ssube
正确。但是为什么不直接使用cin.get()而要创建一个虚拟变量呢? - Benjamin Lindley
@peachykeen:之后。我只是想指出所有三种解决方案都有缺点,而真正的答案在Tim Rupe的回答中,尽管这个回答得到了更高的投票。 - André Caron
当我看到你的第一个代码示例时,我想起了在Ms-Dos c/c++中使用的getch();...自从我开始学习C语言已经12年了,当人们问与此相关的问题时...我感觉就像是ooh...哈哈。 - Jayapal Chandran
显示剩余2条评论

6
system("Pause");

“按任意键继续…”


2
这是我看到的最佳答案。我简直不敢相信一个无限循环会得到赞同... - Ed S.
@Ed:如果你指的是我的答案,它是唯一一个我能看到的无限循环,我不希望人们使用它。只是随便想了几种方法。我应该重新排列它们。 - ssube
2
我很惊讶有这么多人建议修改代码,而实际上并不需要。 - Tim Rupe
1
我以前从未见过 "system("Pause");"。谷歌提供了这个链接,列出了很多反对它的理由:http://www.gidnetwork.com/b-61.html - bjoernz

2

熟悉Windows控制台应用程序开发的人将能更好地帮助您,那时请尝试以下操作:

#include <iostream>

int main(){
    std::cout << "Hello World! ";
    std::cin.get(); // waits for input, press enter to continue
    return 0;
}

std::cin.get()函数的参考文献


-1:文档中写道“从流中提取一个字符并返回其值(转换为整数)。”。如果没有字符可用,没有阻塞的要求,因此尽管它在海报的配置中有效,但它是(微妙地)非标准的。我在Linux系统上遇到了这个问题,它不会阻塞! - André Caron
@André 感谢您指出这一点,我刚在 Mac OS X 上尝试了一下(没有问题)。我从来没有在 Linux 上尝试过。 - bjoernz

1
cout<<"Please press any key to quit";
char number;
cin>>number;

5
按下任意键并回车退出。 - smerlin

1
首先,您可能希望添加一个新行输出以将其刷新到控制台。
cout << "Hello World! " << endl;

如果你真的不想立即退出,你可以在写完这个之后等待控制台输入使用cin,或者调用Sleep(10000)来延迟10秒等等。


1
在主函数结尾处设置断点

1
那就假设你总是在调试模式下运行,是吗? - pinkfloydx33

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接