C ++ getchar 在 VS 2010 中工作,在 2012 年不工作

c++ getchar works in vs 2010, doesn't in 2012

本文关键字:工作 2012 2010 getchar VS      更新时间:2023-10-16

为什么程序只是退出,在vs 2012,而在2010,它等待我的输入?

#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    string path = "c:somepath";
    cout << "Path is" + path << endl;
    getchar();
    return 0;
}

在程序流中没有使用getchar()函数,在您的示例中只使用了等待输入的副作用。不要为了避免关闭窗口而入侵你的程序,你应该使用适当的方法让窗口保持打开状态。

选择下列之一:

  1. 命令窗口
    • 打开命令提示符
    • 导航到您希望程序执行的文件夹
    • 键入。exe的路径并按Enter。执行程序后,命令提示符仍然打开,不需要getchar()
  2. 不调试就启动

    • 只需使用菜单项Debug->Start Without Debugging。执行程序后,新的控制台窗口仍然打开,不需要getchar()
  3. 从调试

    开始
    • 在main函数的结束'}处设置一个断点
    • 使用菜单项Debug->Start。调试会话仍然处于活动状态,控制台程序的窗口仍然打开。不需要getchar()

为什么你应该避免getchar()以保持窗口打开?

  • 这是一个依赖于之前程序的hack。输入缓冲区中可能有一些字符,这里有一个指针:getchar()不能很好地工作?

  • 你的程序不能在批处理文件中使用,如果你已经超过了学习C或c++的阶段。