标准有统一的接口可以实现得到当前程序所在的目录么?
C++ 17 中可以使用 std::filesystem::current_path
,参见 https://en.cppreference.com/w/cpp/filesystem/current_path
在这之前可以这么用,
在 Windows 上,
#include <string>
#include <windows.h>
std::string getexepath()
{
char result[ MAX_PATH ];
return std::string( result, GetModuleFileName( NULL, result, MAX_PATH ) );
}
在 Linux 上,
#include <string>
#include <limits.h>
#include <unistd.h>
std::string getexepath()
{
char result[ PATH_MAX ];
ssize_t count = readlink( "/proc/self/exe", result, PATH_MAX );
return std::string( result, (count > 0) ? count : 0 );
}