C++;Main()函数完成时程序自动关闭 我用C++编写了一个简单的计算器程序::块。当我编译程序时,它在代码::块中运行良好,并以按enter键继续结束,然后您可以退出。但是,当手动运行exe时,如果需要演示,则程序工作正常,但不是按enter键继续,程序将自动关闭

C++;Main()函数完成时程序自动关闭 我用C++编写了一个简单的计算器程序::块。当我编译程序时,它在代码::块中运行良好,并以按enter键继续结束,然后您可以退出。但是,当手动运行exe时,如果需要演示,则程序工作正常,但不是按enter键继续,程序将自动关闭,c++,codeblocks,C++,Codeblocks,My main()函数(所有使用的函数都已定义,不是因为这样)使用iostream库: #include <iostream> // all the other functions are defined here int main() { int input1 = getValueFromUser(); int op = getOperationFromUser(); int input2 = getValueFromUser(); int resu

My main()函数(所有使用的函数都已定义,不是因为这样)使用iostream库:

#include <iostream>
// all the other functions are defined here
int main()
{
    int input1 = getValueFromUser();
    int op = getOperationFromUser();
    int input2 = getValueFromUser();
    int result = getAnswer(input1, op, input2 );
    printResult(result);
    return 0;
}
在正常运行时,它只是自动关闭,因此不允许用户查看他们的答案


提前谢谢

如果您在Windows上,以下是一个不可移植的解决方案(不推荐):

如果您想要便携式版本(推荐),请使用


如果您使用的是Windows,以下是一个不可移植的解决方案(不推荐):

如果您想要便携式版本(推荐),请使用


您可以使用std::cin.Ingore(); 这种方式:
您可以使用std::cin.Ingore(); 这种方式:

您可以在调试模式下运行程序,并在
main()
@πάντα中的最后一个大括号
}
处放置断点ῥεῖ: 这比在没有断点的调试器中运行要好吗?调试器可以满足他的要求?问题在IDE之外运行(这使得断点不可能)。@TheCarver:实际上,当您看到
进程返回0(0x0)时,执行时间:3.930 s
您的程序已经退出。在其中看到程序的窗口附加到Code::Blocks,因此它可以在没有程序的情况下保持打开状态。例如,如果在命令提示符窗口(start->Run->
cmd.exe
)中启动程序,则即使程序退出,该窗口也将保持打开状态,并允许您查看输出。@BenVoigt当我双击exe(我希望能够这样做)运行该exe时,它将自动关闭。对此我能做些什么。我回滚了您的编辑。在标题中添加[已解决]或在问题中编辑答案是不可接受的。如果您找到了答案并想与他人分享,请使用下面为发布答案而设计的空间。在这里回答你自己的问题是完全可以接受的;有关如何执行此操作的提示,请参阅。您可以在调试模式下运行程序,并在
main()
@πάντα中的最后一个大括号
}
处放置断点ῥεῖ: 这比在没有断点的调试器中运行要好吗?调试器可以满足他的要求?问题在IDE之外运行(这使得断点不可能)。@TheCarver:实际上,当您看到
进程返回0(0x0)时,执行时间:3.930 s
您的程序已经退出。在其中看到程序的窗口附加到Code::Blocks,因此它可以在没有程序的情况下保持打开状态。例如,如果在命令提示符窗口(start->Run->
cmd.exe
)中启动程序,则即使程序退出,该窗口也将保持打开状态,并允许您查看输出。@BenVoigt当我双击exe(我希望能够这样做)运行该exe时,它将自动关闭。对此我能做些什么。我回滚了您的编辑。在标题中添加[已解决]或在问题中编辑答案是不可接受的。如果您找到了答案并想与他人分享,请使用下面为发布答案而设计的空间。在这里回答你自己的问题是完全可以接受的;有关如何操作的提示,请参阅。谢谢!!对我来说,不可移植的解决方案工作得很好,但可移植的std::cin.get()不起作用。我想让这个便携,因为我需要把它发送给某人。在什么之前,确切地说?@TheCarver抱歉,请调用
std::cin.ignore()
before
std::cin.get(),因为可能有一个尾随的新行std::cin.ignore();std::cin.get();返回0;像那样?谢谢!!对我来说,不可移植的解决方案工作得很好,但可移植的std::cin.get()不起作用。我想让这个便携,因为我需要把它发送给某人。在什么之前,确切地说?@TheCarver抱歉,请调用
std::cin.ignore()
before
std::cin.get(),因为可能有一个尾随的新行std::cin.ignore();std::cin.get();返回0;像那样?
Process returned 0 (0x0)   execution time : 3.930 s
Press any key to continue.
printResult(result);
system("pause"); //Shows a prompt, "Press any key to continue..."
printResult(result);
std::cin.get(); //Waits for input, press enter to continue