为什么控制台应用程序没有结束?

时间:2012-05-25 23:18:55

标签: visual-c++

我第一次使用Visual C ++(也是该语言的新手) - 经验丰富的C#...所以我有了第一个在Visual Studio中启动的控制台应用程序。

#include "stdafx.h"
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    int i;

    cin >> i;

    return 0;
}

当我按下回车键时,控制台窗口 - 应用程序 - 怎么不关闭?没有其他输入 - 只需输入...

更重要的是,如果我点击回车,如何让应用程序退出(不想使用exit())?

1 个答案:

答案 0 :(得分:2)

std :: cin等待你的一个非空字符串,然后尝试将此字符串转换为整数。

按Enter键时,std :: cin只获取一个空字符串并继续等待一些有效输入。这是设计的。 std :: cin不适用于模拟其他交互。

要在按键上终止应用程序,您必须使用特定于操作系统的工具来读取键盘按下。

这是DOS / console Windows上“conio.h”的kbhit()函数和POSIX系统上的termio函数。

从您的来源我可以得出结论您使用MSVC ++编译器,因此请尝试替换

std::cin >> i

通过

while(!kbhit()) {}

不要忘记添加

#include <conio.h>

并记住这是一个特定于Windows的解决方案。