如何保持在Visual C ++中打开控制台窗口?
我从Visual C ++开始,我想知道如何保持控制台窗口。
例如,这将是一个典型的“hello world”应用程序:
int _tmain(int argc, _TCHAR* argv[]) { cout << "Hello World"; return 0; } 我错过了什么?
用Ctrl + F5而不是F5来启动项目。
 控制台窗口将保持打开状态, Press any key to continue . . . Press any key to continue . . . 程序退出后的消息。 
 请注意,这需要Console (/SUBSYSTEM:CONSOLE)链接器选项,您可以启用,如下所示: 
- 打开您的项目,然后转到解决scheme资源pipe理器。 如果你在K&R跟随我,你的“解决scheme”将是“你好”,下面有1个项目,还有“hello”。
- 右键单击“你好”(或者你的项目名称是什么)。
- 从上下文菜单中select“属性”。
- selectconfiguration属性>链接器>系统。
- 对于右侧窗格中的“子系统”属性,请单击右侧列中的下拉框。
- select“控制台(/ SUBSYSTEM:CONSOLE)”
- 单击应用,等待它完成任何操作,然后单击确定。 (如果“应用”是灰色的,select一些其他子系统选项,点击应用,然后返回并应用控制台选项。我的经验是,自己确定不起作用。
CTRL-F5和子系统提示一起工作; 他们不是单独的选项。
 在你的return语句之前,标准的方法是cin.get() 。 
 int _tmain(int argc, _TCHAR* argv[]) { cout << "Hello World"; cin.get(); return 0; } 
 把一个断点放在return线上。 
你在debugging器中运行它,对吧?
另一个select是使用
 #include <process.h> system("pause"); 
虽然这不是很便携,所以它只能在Windows上运行,但它会自动打印“按任意键继续…”。 为你。
对于生成文件项目,由于Visual Studio中的一个错误(目前至less在2012版之前 – 我还没有testing过2013),接受的解决scheme失败了。 这个bug 在这里详细介绍。
为了使程序在makefile项目终止后暂停,请执行以下步骤(对于2010 – 2012之外的版本,这可能会有所不同):
  1)通过  – 编辑 :见下文。 /SUBSYSTEM:CONSOLE连接器的/SUBSYSTEM:CONSOLE 。
2)在文本编辑器中打开项目文件(.vcxproj)。
  3)在根<project>标签内插入以下内容: 
<ItemDefinitionGroup> <Link> <SubSystem>Console</SubSystem> </Link> </ItemDefinitionGroup>
4)在您的解决scheme中重新加载项目。
5)不debugging运行程序(CTRL + F5)。
编辑:
 根据我下面的评论,设置链接器选项/SUBSYSTEM:CONSOLE实际上与makefile项目无关(如果使用MSVC以外的编译器,甚至不一定可能)。 所有重要的是,该设置被添加到.vcxproj文件,按照上面的步骤3。 
 你可以使用cin.get(); 或者cin.ignore(); 就在你的return语句之前,以避免closures控制台窗口。 
 在main()的结束括号上放置一个断点。 即使有多个return语句,它也会被触发。 唯一的缺点是调用exit()不会被捕获。 
如果你没有debugging,请按照Zoidberg的build议回答,并用Ctrl + F5而不是F5开始你的程序。
 只需将一个断点添加到_tmain方法的_tmain括号中即可。 这是更简单的方法加上你不必添加代码来debugging。 
只要在main的最后一个括号中放一个断点。
  int main () { //...your code... return 0; } //<- breakpoint here 
它适用于我,不需要运行没有debugging。 它也会在触发断点之前执行析构函数,所以你可以检查任何在这些析构函数上打印的消息。
cin.get()或system(“PAUSE”)。 我没听说你可以用return(0);
 我包括#include <conio.h> ,然后添加getch(); 就在return 0;之前return 0; 线。 无论如何,这正是我在学校学到的东西。 上面提到的方法与我看到的完全不同。 
有同样的问题。 我在return语句之前使用_getch()。 有用。
我的2分:
 select1:在main()的末尾添加一个断点 
 select2:在return 0;之前添加此代码return 0;  : 
 std::cout << "Press ENTER to continue..."; //So the User knows what to do std::cin.ignore( std::numeric_limits<std::streamsize>::max(), '\n' ); 
 你需要包含<iomanip> std::numeric_limits 
你可以把keep_window_open(); 这里回来之前就是一个例子
 int main() { cout<<"hello world!\n"; keep_window_open (); return 0; } 
(有些选项可能会用不同的名称来调用,我不使用英文版本)
我有同样的问题,当我创build项目选项“空项目”,创build项目为“Win32控制台应用程序”而不是“空项目”。 在popup的对话框中,按“继续”,之后可以勾选“空白项目”选项并按确认。 之后,CTRL + F5将打开一个不能自动closures的控制台。
我有同样的问题; 在我的应用程序中有多个exit()点,没有办法知道它到底在哪里,然后我发现这个:
 atexit(system("pause")); 
要么
 atexit(cin.get()); 
这样,无论我们退出程序的哪个位置,它都会停止。
另一种select:
 #ifdef _WIN32 #define MAINRET system("pause");return 0 #else #define MAINRET return 0 #endif 
主要:
 int main(int argc, char* argv[]) { MAINRET; } 
最简单的方法来把一个
 Console.ReadLine(); 
在节目结束时。