[求助]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运行很多次,只有偶尔能得到正确结果.
不要返回局部变量的指针啊,局部变量会释放,那文本指针就无效了,应该直接返回 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{};
} 看见这一堆代码,只能说,火山大法好。
页:
[1]