Vanyogin 发表于 2023-4-7 10:14:13

[求助]C++代码取运行目录

本帖最后由 Vanyogin 于 2023-4-7 10:15 编辑

const wchar_t* 程序_取目录W() {
    wchar_t exePath;
    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:42

不要返回局部变量的指针啊,局部变量会释放,那文本指针就无效了,应该直接返回 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:27

看见这一堆代码,只能说,火山大法好。
页: [1]
查看完整版本: [求助]C++代码取运行目录