几天前是我开始使用C ++,所以可能是一个业余而愚蠢的问题:
在我的应用程序关闭时,将调用std :: atexit()中提供的函数。很高兴。但是,一旦我使用std :: cin从用户端获取输入(至少一次),就不会调用该函数。
这是一个控制台应用程序。
编辑:我想在程序等待输入时仍然执行我的void Close()函数。但是,只有在程序不等待输入的情况下,我才能实现该目标。我认为这可能不是正确的方法,我的程序启动了Apache Web服务器和Mysql数据库服务器(使用ShellExecuteEx()),当我的应用程序停止时,我也将其停止。
我也尝试过std :: set_terminate()。
// This is super good, everything works as expected
#include <iostream>
#include <string>
void Close()
{
// Code I need to run when program closes.
}
int main()
{
std::atexit(Close);
// Some code...
return 0;
}
但是,如果我等待用户输入,则不会调用'void Close()'。
#include <iostream>
#include <string>
void Close()
{
// Code I need to run when program closes.
}
int main()
{
std::atexit(Close);
std::string example;
std::cin >> example;
return 0;
}
答案 0 :(得分:0)
但是,如果我等待用户输入,则不会调用
void Close()
。
的确如此,但这是需要的。在等待用户输入时,您的程序尚未关闭。一旦用户确实提供了将被解析为example
字符串对象的输入,则将在调用Close()
时为-和 this 。因此,在执行时,键入一些字符,按回车键,将触发Close()
。