在 c/c++ 中通过环境变量创建路径是否有比这更好的方法?
char *S1 = std::getenv("SystemDrive");
char *S2 = std::getenv("USERNAME");
strcat(S1,"\\\\Users\\\\");
strcat(S1,S2);
strcat(S1,"\\\\");
strcat(S1,"Documents");
最佳答案
我建议获取类似这样的用户配置文件目录。
BOOL GetCurrentUserDir(LPTSTR lpszBuf, LPDWORD lpdwBuflen)
{
HANDLE hProcessToken;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_READ, &hProcessToken))
return FALSE;
if (!GetUserProfileDirectory(hProcessToken, lpszBuf, lpdwBuflen)) {
CloseHandle(hProcessToken);
return FALSE;
}
CloseHandle(hProcessToken);
return TRUE;
}
我是这样使用这个函数的:
WCHAR szLocalPath[MAX_PATH];
if (!GetCurrentUserDir(szLocalPath, &cchPath))
{
//Handle the error
}
然后您可以附加路径的其余部分。
这封装了特定的环境变量并使用了 Win32 API。随着时间的推移,这更有可能保持便携。
关于c++ - 有没有更好的方法在 c/c++ 中通过环境变量创建路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36926001/