递归火山软件开发平台

标题: [求助]C++代码取运行目录 [打印本页]

作者: Vanyogin    时间: 2023-4-7 10:14
标题: [求助]C++代码取运行目录
本帖最后由 Vanyogin 于 2023-4-7 10:15 编辑

const wchar_t* 程序_取目录W() {
    wchar_t exePath[MAX_PATH];
    GetModuleFileNameExW(GetCurrentProcess(), 0, exePath, MAX_PATH);
    const wchar_t* path = exePath;

    std::wstring wstr = path;
    size_t pos = wstr.find_last_of(L"\\")+1;
    const wchar_t* str2 = L"";
    if (pos != std::wstring::npos) {
        wstr = wstr.substr(0, pos);
        str2 = wstr.c_str();
    }
    return str2;
}


请问这代码为什么取不了正确结果?在vs运行很多次,只有偶尔能得到正确结果.

作者: Xelloss0618    时间: 2023-4-7 10:35
不要返回局部变量的指针啊,局部变量会释放,那文本指针就无效了,应该直接返回 std::wstring

std::wstring 程序_取目录W()
{
    std::wstring exePath;
    exePath.resize(MAX_PATH);
    ::GetModuleFileNameExW(::GetCurrentProcess(), 0, exePath.data(), MAX_PATH);
    size_t pos = exePath.find_last_of('\\');
    if (pos != std::wstring::npos)
    {
        exePath.erase(pos + 1);
        return exePath;
    }
    return std::wstring{};
}
作者: 创世魂    时间: 2023-4-7 12:17
看见这一堆代码,只能说,火山大法好。




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4