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

- 上一篇:c++获取内存地址
- 下一篇:c++系统找不到指定的路径怎么办