C++ 获取当前程序的路径编码实战

本文提供了一段实用的代码,帮助读者在Windows和非Windows平台上获取应用程序的路径,尤其适用于没有现成接口的工程实践。通过C++实现,适用于多种环境并经实践验证有效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在工程实践中,很多同学非常头疼获取当前应用程序的路径,不像Qt有现成的接口可用。

这里给大家提供一个经过个人实践证明可用的实战代码,请大家自取使用。

#ifdef _WIN32
#include <Windows.h>
extern "C" const IMAGE_DOS_HEADER __ImageBase;
#endif // defined(_WIN32)

#define PATH_MAX 1024

using namespace std;

string exePath(bool isExe)
{
    char buffer[PATH_MAX * 2 + 1] = { 0 };

#ifdef _WIN32
    int n = GetModuleFileNameA(isExe ? nullptr : (HINSTANCE)&__ImageBase, buffer, sizeof(buffer));
#else
    int n = readlink("/proc/self/exe", buffer, sizeof(buffer));
#endif

    string filePath;
    if (n <= 0) 
    {
        filePath = "./";
    }
    else 
    {
        filePath = buffer;
    }

#ifdef _WIN32
    for (auto& ch : filePath) 
    {
        if (ch == '\\')
        {
            ch = '/';
        }
    }
#endif

    return filePath;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值