c++如何获取可执行文件的当前路径_c++获取程序运行路径的方法


Windows使用GetModuleFileName获取路径,Linux通过readlink读取/proc/self/exe,跨平台可封装统一函数,注意区分可执行文件路径与当前工作目录。

c++如何获取可执行文件的当前路径_c++获取程序运行路径的方法

C++获取可执行文件当前路径的方法在不同操作系统下略有差异,下面介绍几种常见且实用的方式,适用于Windows和Linux平台。

1. Windows平台:使用GetModuleFileName

在Windows系统中,可以通过Windows API GetModuleFileName 获取当前可执行文件的完整路径,然后提取目录部分。

示例代码:

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

std::string GetExecutablePath() {
    char buffer[MAX_PATH];
    GetModuleFileNameA(NULL, buffer, MAX_PATH);
    std::string fullPath(buffer);
    // 去掉文件名,保留路径
    size_t lastSlash = fullPath.find_last_of("\/");
    if (lastSlash != std::string::npos) {
        return fullPath.substr(0, lastSlash);
    }
    return ""; // 异常情况
}

调用 GetExecutablePath() 即可获得程序所在目录。

AiTxt 文案助手 AiTxt 文案助手

AiTxt 利用 Ai 帮助你生成您想要的一切文案,提升你的工作效率。

AiTxt 文案助手 105 查看详情 AiTxt 文案助手

2. Linux平台:读取/proc/self/exe符号链接

Linux系统中,每个进程的信息保存在/proc/[pid]/exe,其中/proc/self/exe指向当前程序的可执行文件路径。可以使用readlink函数读取该符号链接。

示例代码:

#include
#include
#include
#include stream>

std::string GetExecutablePath() {
    char result[PATH_MAX];
    ssize_t count = readlink("/proc/self/exe", result, PATH_MAX);
    if (count != -1) {
        std::string fullPath(result, count);
        size_t lastSlash = fullPath.find_last_of("/");
        if (lastSlash != std::string::npos) {
            return fullPath.substr(0, lastSlash);
        }
    }
    return ""; // 失败
}

3. 跨平台封装建议

为了兼容多个平台,可以用宏判断操作系统,统一接口。 #ifdef _WIN32
    #include windows.h>
#else
    #include
    #include
#endif

std::string GetCurrentExecutableDirectory() {
#ifdef _WIN32
    char buffer[MAX_PATH];
    GetModuleFileNameA(NULL, buffer, MAX_PATH);
    std::string path(buffer);
#else
    char result[PATH_MAX];
    ssize_t count = readlink("/proc/self/exe", result, PATH_MAX);
    std::string path(count == -1 ? "" : std::string(result, count));
#endif
    size_t pos = path.find_last_of("/\");
    if (pos != std::string::npos) {
        return path.substr(0, pos);
    }
    return ".";
}

4. 注意事项

获取的路径是程序启动时的可执行文件位置,不是当前工作目录(current working directory)。
当前工作目录可用getcwd()(Linux)或GetCurrentDirectory()(Windows)获取。
路径分隔符在不同系统中不同,处理时建议统一判断/和。

基本上就这些方法,根据目标平台选择合适实现即可。跨平台项目推荐封装统一函数。

以上就是c++++如何获取可执行文件的当前路径_c++获取程序运行路径的方法的详细内容,更多请关注其它相关文章!


# 可以用  # 常州seo优化技术  # 欧洲建设视频素材网站  # 潍坊网络推广制作网站  # 江苏租赁大楼网站建设  # 营销推广电子商务网站  # 网站优化与推广建设方案  # 南通如皋营销推广哪家好  # 天心区抖音营销推广方式  # 天门建设网站制作  # 肥东全网营销推广哪里有  # 中文网  # 可以通过  # 相关文章  # 适用于  # c++  # 多个  # 返回值  # 尼克  # 可执行文件  # linux系统  # windows系统  # stream  # win  # ios  # 操作系统  # windows  # linux  # 程序路径 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894 】


相关推荐: 顺丰快递收费标准查询_如何查看顺丰最新收费价格  智学网app怎么登录忘记密码_智学网app忘记密码找回与重新登录操作方法  《鹿路通》退余额方法  荣耀Magic7拍照夜景噪点处理_荣耀Magic7相机优化  《幻兽帕鲁》手游帕鲁捕捉技巧分享  Go语言中方法接收器的选择:值类型还是指针类型?  偃武诸葛亮阵容搭配推荐  《三国:谋定天下》平民全阶段通用阵容  AO3中文入口稳定分享_AO3官网HTTPS看文详解  steam缓存文件在哪儿_steam缓存文件的路径查找方法与结构说明  抖音如何解除|直播|权限绑定_抖音关闭并解绑|直播|功能的方法  C#解析并修改XML后保存 如何确保格式与编码的正确性  mysql如何管理数据库账户_mysql数据库账户管理技巧  J*aScript深度克隆:实现高效、健壮与安全的复杂对象复制  什么是Satis,如何用它搭建一个私有的composer仓库?  酷狗音乐多音轨设置教程  悟空浏览器如何恢复关闭的标签页 悟空浏览器撤销关闭网页快捷键设置  SQL聚合查询、联接与筛选:GROUP BY 子句的正确使用与常见陷阱  圆通快递包裹轨迹查询 圆通速递快件实时位置跟踪  Win10显卡驱动安装失败怎么办 Win10使用DDU彻底卸载驱动【解决】  解决C#跨线程访问XML对象的异常 安全的并发XML处理模式  Mac如何开启画中画模式_Mac Safari浏览器视频画中画功能  Flask 应用中图片动态更新与上传:实现客户端定时刷新与服务器端文件管理  汽水音乐网页端访问 汽水音乐官方网页直达  性能与资源监视器快捷打开  全球各国上班时间表外贸邮件时间  Win10如何关闭操作中心通知 Win10免打扰设置全攻略【清爽】  邦丰播放器频道搜索设置  Windows 11怎么删除恢复分区_Windows 11使用Diskpart命令强行删除分区  J*a中的值传递到底指什么_值传递模型在参数传递中的真正含义说明  如何用mysql实现客户反馈管理_mysql客户反馈数据库方法  西瓜视频怎么查看访客记录_西瓜视频访客记录查看方法  Win10锁屏时间怎么设置 Win10调整自动锁屏时间方法  WooCommerce购物车:强制显示所有交叉销售商品教程  Go反射进阶:访问内嵌结构体中的被遮蔽方法  《KARDS》冬季扩展包“国土阵线”上线!全新“协力”机制改变战场格局  小红书如何引流到私信?引流到私信有用吗?  在Dash应用中自定义HTML标题和网站图标  OPPO手机参数配置如何开启护眼模式_OPPO手机参数配置护眼模式开启指南  店铺如何关联视频号推广?视频号推广有什么用?  b站怎么查看视频的码率_b站视频码率查看方法  优化CSS动画与J*aScript定时器协同:构建稳定Toast提示  告别阻塞等待:如何使用GuzzlePromises优雅处理PHP异步操作,提升应用响应速度  AI图层蒙版怎么用_AI图层蒙版应用技巧与设计实例  sublime怎么快速在浏览器中预览HTML_sublime配置View in Browser教程  yy漫画登录页面官方入口_yy漫画在线阅读网址入口  《绝区零》2.3前瞻|直播|内容介绍  iPhone17Pro如何连接蓝牙耳机_iPhone17Pro蓝牙设备配对与连接方法介绍  追剧达人如何发弹幕  如何外贸网站设计-能留住客户提升用户体验! 

 2025-10-28

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.