我在另一个应该给你的论坛中找到了这个。但我认为这可能不是最佳方式,我认为由于数组未被删除而导致内存泄漏。这是真的?这也是最好的方式吗?
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)直接提供文件夹目录。
答案 0 :(得分:-3)
我怀疑还有什么比标准库更好的东西。
#include <filesystem>
std::filesystem::path cp = std::filesystem::current_path();
参考:https://en.cppreference.com/w/cpp/filesystem
e2a:引用链接的摘录。
注释
当前工作目录是与 进程,用作路径名解析中的起始位置 相对路径。
许多操作系统返回的当前路径很危险 全局变量。第三方可能会意外更改它,或者 系统库功能或其他线程。