当前位置:首页 C++ > 正文

c++获取程序运行路径

作者:野牛程序员:2023-07-18 08:26:37 C++阅读 3147

在C++中,可以使用以下代码获取程序运行的路径:

#include <iostream>
#include <filesystem>

int main() {
    std::filesystem::path path = std::filesystem::current_path();
    std::cout << "当前程序运行路径: " << path << std::endl;
    return 0;
}

上述代码使用了C++17中引入的std::filesystem库来操作文件系统。std::filesystem::current_path()函数用于获取当前程序的运行路径,并将其存储在std::filesystem::path对象中。然后,通过std::cout打印出程序的运行路径。

请确保编译器支持C++17标准,并链接std::filesystem库(通常需要添加-lstdc++fs选项)。这样,当编译并运行上述代码时,将会得到程序的运行路径输出。


如果使用的是C++98标准(旧版标准),则没有直接的标准库函数来获取程序运行路径。但可以使用操作系统特定的方法来获取程序运行路径。下面是一个在Windows和Linux上获取程序运行路径的示例:

对于Windows:

#include <iostream>
#include <windows.h>

int main() {
    char path[MAX_PATH];
    DWORD length = GetModuleFileName(NULL, path, MAX_PATH);
    if (length != 0) {
        std::cout << "当前程序运行路径: " << path << std::endl;
    } else {
        std::cerr << "无法获取程序运行路径" << std::endl;
    }
    return 0;
}

对于Linux:

#include <iostream>
#include <unistd.h>

int main() {
    char path[PATH_MAX];
    ssize_t length = readlink("/proc/self/exe", path, sizeof(path));
    if (length != -1) {
        path[length] = '\\0';
        std::cout << "当前程序运行路径: " << path << std::endl;
    } else {
        std::cerr << "无法获取程序运行路径" << std::endl;
    }
    return 0;
}

请注意,这些方法是特定于操作系统的,因此这些示例仅适用于Windows和Linux。在其他操作系统上,需要查阅相应的文档来确定如何获取程序运行路径。

这些方法利用了操作系统的功能来获取程序的绝对路径,并将其存储在一个缓冲区中。然后,通过std::cout将路径打印出来。如果无法获取路径,将会输出错误消息。

请根据你的操作系统选择适当的示例,并在编译并运行代码时,确保正确链接操作系统特定的库(例如,Windows上需要链接kernel32.lib)。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击