C++ C++;:获取exe文件夹路径的最佳方法?

C++ C++;:获取exe文件夹路径的最佳方法?,c++,C++,我在另一个论坛上找到的,应该是给你的。但我认为这可能不是最好的方法,而且我认为这会导致内存泄漏,因为阵列没有被删除。这是真的吗?这也是最好的方式吗 std::string ExePath() { using namespace std; char buffer[MAX_PATH]; GetModuleFileName(NULL, buffer, MAX_PATH); string::size_type pos = string(buffer).find_l

我在另一个论坛上找到的,应该是给你的。但我认为这可能不是最好的方法,而且我认为这会导致内存泄漏,因为阵列没有被删除。这是真的吗?这也是最好的方式吗

std::string ExePath() 
{
    using namespace std;

    char buffer[MAX_PATH];

    GetModuleFileName(NULL, buffer, MAX_PATH);

    string::size_type pos = string(buffer).find_last_of("\\/");

    if (pos == string::npos)
    {
        return "";
    }
    else 
    {
        return string(buffer).substr(0, pos);
    }
}

编辑:最佳方式是一个跨平台命令(如果不存在,则使用Windows),直接提供文件夹目录。

定义“最佳方式”-因为C++17有
std::filesystem
,可以认为它“更好”(因为它是标准库的一部分)。另外,使用boost::filesystem::path,您只需
删除[]
您的
新[]
(这里没有
新[/code>),这是高度特定于平台的。在Linux上,读取
/proc/self/exe
符号链接的目标是最好的选择。在其他系统上,则是其他系统。没有一个正确的答案。可能是重复的。另请参阅或。我没有在该代码中看到内存泄漏。如果你不确定,再花些时间学习基础知识。